题解 | #滑动窗口的最大值#
滑动窗口的最大值
https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型vector * @param size int整型 * @return int整型vector */ vector<int> maxInWindows(vector<int>& num, int size) { vector<int> return_; if (size == 0) return return_; int len = num.size(); int i, j; int max_pos = -1;//存储当前滑动窗口中的最大值位置 for (i = size - 1; i < len; i++) { //滑动窗口向前移动一格后, //上一个窗口的最大值位置还在目前窗口以内,则对比窗口新加入的元素是否为最大值 //若上个窗口的最大值位置不再目前窗口以内,则对窗口内所有元素进行遍历找出最大值位置 if (max_pos > i - size){//在窗口内 if (num[i] >= num[max_pos]) max_pos = i; } else {//不在窗口内 max_pos = i - size + 1; for (j = i - size + 2; j <= i; j++) if (num[j] >= num[max_pos]) max_pos = j; } return_.push_back(num[max_pos]); //插入当前窗口的最大值位置 } return return_; } };