码迷,mamicode.com
首页 > Windows程序 > 详细

[LeetCode]Sliding Window Maximum

时间:2017-05-07 01:04:07      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:个数   思路   ret   tor   cto   turn   开始   bsp   div   

题目: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

标签:个数   思路   ret   tor   cto   turn   开始   bsp   div   

原文地址:http://www.cnblogs.com/yeqluofwupheng/p/6819132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!