From 98f6872efa0cd02e892ed5d7b836c6929d5c0e10 Mon Sep 17 00:00:00 2001 From: Stoycho Kyosev Date: Fri, 15 Nov 2024 14:38:47 -0500 Subject: Add additional tasks --- .../solutions/sliding-window.maximum.cpp | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Additional/Additional-2024-IS/solutions/sliding-window.maximum.cpp (limited to 'Additional/Additional-2024-IS/solutions/sliding-window.maximum.cpp') 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 +#include +#include + +std::vector sliding_window_maximum(const std::vector v, unsigned k) +{ + std::vector result; + std::deque 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 -- cgit v1.3.1-26-gb76a