AcWing-滑动窗口的最大值(困难)
题目描述:
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。
好的方法是使用双向队列,虽然看懂了但是感觉考试能复现的可能比较小,所以还是暴力写了一下。
困难题先放弃,之后有时间再补。
//暴力遍历。 class Solution { public: vector<int> maxInWindows(vector<int>& nums, int k) { vector<int> ans; int max = 0; for (int i = 0; i < k; i++) if (nums[i] > max) max = nums[i]; ans.push_back(max); for (int left = 1, right = k; right < nums.size(); left++, right++) { if (nums[right] > max) {//右边新进来的数字大于上一轮最大值时候,使其成为新的最大值 max = nums[right]; } else if (nums[left - 1] == max) {//右边新进来的数字等于上一轮最大值的时候,重新打擂台求最大值 max = 0; for (int i = left; i <= right; i++) if (nums[i] > max) max = nums[i]; } ans.push_back(max); } return ans; } };