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;
    }
};
全部评论

相关推荐

喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
头像
10-16 09:58
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务