题解 | #滑动窗口的最大值#单调栈

滑动窗口的最大值

https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788

单调栈,递增栈
package main

/**
 *
 * @param num int整型一维数组
 * @param size int整型
 * @return int整型一维数组
 */
func maxInWindows(num []int, size int) []int {
	// write code here
	res := make([]int,0)
	stack := []int{}
    if len(num)<size||size==0{
		return res
	}
	for i := 0; i < size; i++ {
		for len(stack) > 0 && stack[len(stack)-1] < num[i] {
			stack = stack[:len(stack)-1]
		}
		stack = append(stack, num[i])
	}
	res = append(res, stack[0])
	for i := size; i < len(num); i++ {
		if len(stack) > 0 && stack[0] == num[i-size] {
			stack = stack[1:]
		}
		for len(stack) > 0 && stack[len(stack)-1] < num[i] {
			stack = stack[:len(stack)-1]
		}
		stack = append(stack, num[i])
		res = append(res, stack[0])
	}
	return res
}


全部评论

相关推荐

点赞 评论 收藏
转发
头像
昨天 23:54
已编辑
门头沟学院 化工与制药类
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务