数据结构-单调队列

本文介绍了单调队列的概念及其在解决LeetCode问题中的应用,包括简化路径、滑动窗口最大值和绝对差不超过限制的最长连续子数组。通过单调队列,可以有效地处理具有单调性的数据,例如在滑动窗口问题中找到最大值或最小值。
摘要由CSDN通过智能技术生成

本文承接:Java-数据结构-单调栈<一>

                 Java-数据结构-单调栈<二>

1. 单调栈的简单介绍和单调栈的用法

        见<一>

2. 单调队列

        与单调栈相似,单调队列里存的也是具有单调性质的数据。单调队列与普通队列不一样的地方就在于单调队列既可以从队首出队,也可以从队尾出队。即是两个方向都可以进出的“单调栈”。

模板:

for i, num := range nums {
    //维护队列的单调性
    for len(deque) > 0 && num >= nums[deque[len(deque)-1]] {
        deque = deque[:len(deque)-1]
    }
    deque = append(deque, i)
    //取队首的元素判断是否符合结果
    for deque[0] <= i-k {
        deque = deque[1:]
    }
    //更新结果
    if i >= k-1 {
        res = append(res, nums[deque[0]])
    }
}

3. leetcode实战

1. leetcode71 简化路径

        给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。

        在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。

请注意,返回的 规范路径 必须遵循下述格式:

始终以斜杠 '/' 开头。
两个目录名之间必须只有一个斜杠 '/' 。
最后一个目录名(如果存在)不能 以 '/'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值