首页 > 代码库 > [LeetCode]Sliding Window Maximum
[LeetCode]Sliding Window Maximum
题目:Sliding Window Maximum
给定一个数组和滑动窗口的大小,窗口从开始位置每次向后滑动一格,找出每次窗口的最大值;
思路:
记录当前窗口的最大值下标,每次移动一格时,最小下标会移出窗口,邻接着的最大下标会移入窗口;
因此,每次窗口移动时,首先比较移入的是否比当前最大值还大,是则更新最大值;然后判断移出的是否是最大值,是则重新找最大值。
vector<int> LeetCode::maxSlidingWindow(vector<int>& nums, int k){ vector<int>arr; if (!nums.size())return arr; int max = 0; for (size_t i = 1; i < k && i < nums.size(); i++){//找第一个最大值 if (nums.at(i) >= nums.at(max))max = i; } arr.push_back(nums.at(max)); if (k >= nums.size())return arr; for (size_t i = k; i < nums.size(); i++){ if (nums.at(i) >= nums.at(max))max = i;//更新新窗口的最大值 else if (i - k >= max){//旧窗口的最大值移出去了,且新窗口的最大值小于移出去的最大值 //找新的最大值 ++max; for (size_t j = max + 1; j <= i; ++j){ if (nums.at(j) >= nums.at(max))max = j; } } arr.push_back(nums.at(max)); } return arr; }
[LeetCode]Sliding Window Maximum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。