From 21644f30e1781d9bfc98604f5da439d36124c288 Mon Sep 17 00:00:00 2001 From: Deepak Yadav <31646033+deepakmca17du@users.noreply.github.com> Date: Sun, 24 Oct 2021 12:33:09 +0530 Subject: [PATCH] Create maximumSubarray --- maximumSubarray | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 maximumSubarray diff --git a/maximumSubarray b/maximumSubarray new file mode 100644 index 0000000..1589828 --- /dev/null +++ b/maximumSubarray @@ -0,0 +1,27 @@ + //Function to find maximum of each subarray of size k. + vector max_of_subarrays(int *arr, int n, int k) + { + // your code here + deque dq; + vector res; + + for(int i = 0; i < k; ++i) { + while(!dq.empty() and arr[dq.back()] <= arr[i]) dq.pop_back(); + dq.push_back(i); + } + + + for(int i = k; i < n; ++i) { + res.push_back(arr[dq.front()]); + + while(!dq.empty() and dq.front() <= i-k) dq.pop_front(); + + while(!dq.empty() and arr[dq.back()] <= arr[i]) dq.pop_back(); + + dq.push_back(i); + } + + res.push_back(arr[dq.front()]); + + return res; + }