Website Summary Files Commits Branches @commit @diff @stats
path: root / Additional / Additional-2024-IS / solutions / sliding-window.maximum.cpp
diff options
context:
space:
mode:
Commit98f6872efa0cd02e892ed5d7b836c6929d5c0e10 (patch)
Author
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-11-15 14:38:47 -0500
Committer
 Stoycho Kyosev <stoycho.kk@gmail.com>
2024-11-15 14:38:47 -0500
Files3f5a174c2081dda038ff8874f40a849b17a62c45 /Additional/Additional-2024-IS/solutions/sliding-window.maximum.cpp
Data-structures-and-algorithms-98f6872efa0cd02e892ed5d7b836c6929d5c0e10.tar
Data-structures-and-algorithms-98f6872efa0cd02e892ed5d7b836c6929d5c0e10.tar.gz
Data-structures-and-algorithms-98f6872efa0cd02e892ed5d7b836c6929d5c0e10.zip
Parent54be018e9810ff7cfab307e17da1aa4288b9f414 (diff)
Add additional tasks
1 files changed, 42 insertions, 0 deletions
-rw-r--r--Additional/Additional-2024-IS/solutions/sliding-window.maximum.cpp42
diff --git a/Additional/Additional-2024-IS/solutions/sliding-window.maximum.cpp b/Additional/Additional-2024-IS/solutions/sliding-window.maximum.cpp
new file mode 100644
index 0000000..242cd6a
--- /dev/null
+++ b/Additional/Additional-2024-IS/solutions/sliding-window.maximum.cpp
@@ -0,0 +1,42 @@
+#include <iostream>
+#include <deque>
+#include <vector>
+
+std::vector<int> sliding_window_maximum(const std::vector<int> v, unsigned k)
+{
+ std::vector<int> result;
+ std::deque<int> window;
+
+ for (size_t i = 0; i < k; i++)
+ {
+ while(!window.empty() && window.back() < v[i])
+ {
+ window.pop_back();
+ }
+ window.push_back(v[i]);
+ }
+
+ result.push_back(window.front());
+
+ for (size_t i = k; i < v.size(); i++)
+ {
+ if(window.front() == v[i-k])
+ window.pop_front();
+
+ while(!window.empty() && window.back() < v[i])
+ {
+ window.pop_back();
+ }
+
+ window.push_back(v[i]);
+
+ result.push_back(window.front());
+ }
+
+ return result;
+}
+
+int main()
+{
+
+} \ No newline at end of file