c++

滑动窗口的最大值

http://www.nowcoder.com/questionTerminal/1624bc35a45c42c0bc17d17fa0cba788

class Solution {
public:
    vector<int> maxInWindows(const vector<int>& num, unsigned int size)
    {
        vector<int> result;
        if (size == 0 || num.size() == 0 || num.size() < size) return result;
        map<int, int> winMap;
        for (size_t i = 0; i < num.size(); ++ i) {
            if (i <= size-1) {
                winMap[num[i]] ++;
            } else {
                winMap[num[i-size]] --;
                if (winMap[num[i-size]] == 0) {
                    winMap.erase(num[i-size]);
                }
                winMap[num[i]] ++;
            }
            if (i>=size-1) result.push_back(winMap.rbegin()->first);
        }
        return result;
    }
};
全部评论

相关推荐

每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务