Saved Bookmarks
| 1. |
Write a function to find the maximum for each and every contiguous subarray of size k. |
Answer»
vector<int> max_of_subarrays(vector<int> arr, int n, int k){ int i=0,j=0; deque<int> dq; dq.push_front(i++); while(i<k) { while(!dq.empty()&&arr[dq.back()]<=arr[i]) dq.pop_back(); dq.push_back(i++); } vector<int> ans; while(i<n) { ans.push_back(arr[dq.front()]); while(!dq.empty()&&j>=dq.front()) { dq.pop_front(); } j++; while(!dq.empty()&&arr[dq.back()]<=arr[i]) dq.pop_back(); dq.push_back(i++); } ans.push_back(arr[dq.front()]); return ans; }
|
|