题目描述:
给定一个数组 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;
}
};
京公网安备 11010502036488号