Website Summary Files Commits Branches @commit @diff @stats
path: root / Seminar03 / task03.cpp
diff options
context:
space:
mode:
Commit7b38c7fa2a76d912ca45576c06b9f900d77b616c (patch)
Author
 Stoycho Kyosev <stoycho.kk@gmail.com>
2022-10-19 13:15:50 +0300
Committer
 Stoycho Kyosev <stoycho.kk@gmail.com>
2022-10-19 13:15:50 +0300
Files2997df965325fb3bf9fcb4c8b31298e9cc615ce6 /Seminar03/task03.cpp
Data-structures-and-algorithms-7b38c7fa2a76d912ca45576c06b9f900d77b616c.tar
Data-structures-and-algorithms-7b38c7fa2a76d912ca45576c06b9f900d77b616c.tar.gz
Data-structures-and-algorithms-7b38c7fa2a76d912ca45576c06b9f900d77b616c.zip
Parent45d4463d1fd0846ebc941e70abd791f5e2c0fccb (diff)
add Sem03
1 files changed, 41 insertions, 0 deletions
-rw-r--r--Seminar03/task03.cpp41
diff --git a/Seminar03/task03.cpp b/Seminar03/task03.cpp
new file mode 100644
index 0000000..eef4cf4
--- /dev/null
+++ b/Seminar03/task03.cpp
@@ -0,0 +1,41 @@
+#include<iostream>
+#include<deque>
+#include<vector>
+
+std::vector<int> maxSlidingWindow(const std::vector<int>& v, size_t k) {
+ std::deque<int> window;
+ std::vector<int> result;
+
+ 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() {
+ std::vector<int> example = {1, 3, -1, -3, 5, 3, 6, 7};
+
+ std::vector<int> result = maxSlidingWindow(example, 3);
+
+ for(auto elem : result)
+ std::cout << elem << " ";
+} \ No newline at end of file