zoukankan      html  css  js  c++  java
  • [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;
    }
  • 相关阅读:
    unity3D打造skybox淡入淡出
    FastGUI for NGUI教程
    (转)oracle的split函数
    (转)oracle嵌套表示例
    (转)pipe row的用法, Oracle split 函数写法.
    (转)Oracle 包(Package)
    (转)Oracle存储过程中的事务
    distinct与order by
    Oracle存储过程使用总结
    (转)Oracle中动态SQL详解
  • 原文地址:https://www.cnblogs.com/yeqluofwupheng/p/6819132.html
Copyright © 2011-2022 走看看