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

滑动窗口的最大值

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


/**
 * 
 * @param num int整型一维数组 
 * @param size int整型 
 * @return int整型一维数组
*/
//使用双端队列
//遍历次数超过k时,就把上一个区间里的最大值删掉
//i从k-1开始,就可以把队列里的最大值加入结果数组
func maxInWindows( num []int ,  k int ) []int {
    queue := []int{}
    res := []int{}
    for i := 0; i < len(num); i++ {
        for len(queue) > 0 && queue[len(queue) - 1] < num[i] {
            queue = queue[:len(queue)-1]
        }
        queue = append(queue, num[i])
        if i >= k && queue[0] == num[i-k] {
            queue = queue[1:]
        }
        if i >= k - 1 {
            res = append(res, queue[0])
        }
    }
    return res
}
全部评论
边界值貌似没有处理,循环之前加一下判断为好 if k == 0 || len(num) == 0 || k > len(num) { return []int{} }
点赞 回复 分享
发布于 2024-09-25 15:14 日本

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
smile丶snow:感觉可以加一些ai相关的内容吧。现在面试很少能逃掉这些问题。羡慕里面感觉缺少一个项目背景。比如第二个项目后台管理系统…你为什么要做这个后台管理系统呢?是为了解决什么问题。比如你管理一个商品列表的增加减少。需要一个背景吧。哦或者说你第一个电子书那个是c端的,你肯定需要一个管理系统吧,那就是第二个后台管理系统,但这两个难道不应该是一个项目吗?可以稍微包装一下,最起码让人看着不是玩具项目。个人观点。
点赞 评论 收藏
分享
评论
4
2
分享

创作者周榜

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