题解 | #滑动窗口的最大值#
滑动窗口的最大值
https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788
func maxInWindows( num []int , size int ) []int { // write code here // ans := []int{} //暴力 // for l:=0; l<len(num)-size+1 ; l++{ // r := l+size-1 // max_ := -1 // for i:=l;i<=r;i++{ // max_ = max(max_, num[i]) // } // if max_ != -1{ // ans = append(ans, max_) // } // } // return ans //单调队列 res := make([]int, 0, len(num)-size+1) dq := []int{} for i:= 0;i<len(num);i++{ fmt.Println(dq) for len(dq)>0 && num[i] > dq[len(dq)-1]{ //使dq保持单调 dq = dq[:len(dq)-1] } dq = append(dq, num[i]) if i>=size{ if num[i-size] == dq[0]{//滑动窗口 移除队头元素 dq = dq[1:] } } if i>=size-1{ //开始统计结果 res = append(res, dq[0]) } } return res }