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

滑动窗口的最大值

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
}


全部评论

相关推荐

头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务