单调的堆栈和队列。定义和例子

2023-12-23

到底什么是单调堆栈? (例如,它与单调队列有何不同?)

例如。考虑以下整数数组:[0, 2, 1, 3, 4]。如果我从左到右处理这个数组并将其插入到单调递减的堆栈中,我应该在堆栈中看到什么,为什么?


Here http://www.leetcode-solution.com/2019/06/01/1017-odd-even-jump.html这是 Python 中单调递减堆栈的一个示例,显然它被用在许多解决方案中奇偶跳问题 https://leetcode.com/problems/odd-even-jump/:

def make(A):
    result = [None] * N
    stack = []  # invariant: stack is decreasing
    for i in A:
        while stack and i > stack[-1]:
            result[stack.pop()] = i
        stack.append(i)
    return result

如果我在以下输入上运行它A = [0, 2, 1, 3, 4] I get [2, 3, 3, 4, None]。我觉得很奇怪,因为它包含两个 3,和一个None价值。这实际上正确地实现了单调堆栈吗?


在你的例子中result is not单调堆栈。我想你很困惑,因为描述问题的解决方案暗示使用“单调堆栈”,并且函数名称make可能会给您留下它正在构建的印象。但事实并非如此。

A 单调递减堆栈是一个堆栈,在弹出其元素时将产生一个序列:

  1. is 单调递减
  2. 遵守输入的 LIFO(后进先出)顺序
  3. 包括最后堆叠的物品(即它可以清除大于它的物品)。

在这种情况下,函数make uses单调堆栈的构造(变量stack)来识别“下一个更大的索引”(存储在result)对于数组 A 中的每个(索引)值。这是因为构建单调堆栈的过程恰好识别输入的“下一个更大索引”,因为您正在清除不应包含在输出中的项目(根据上面的属性)当您堆叠新物品时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单调的堆栈和队列。定义和例子 的相关文章

  • 排序矩阵的选择算法

    这是谷歌面试问题 给定一个 N N 矩阵 所有行均已排序 所有列均已排序 找到矩阵的第 K 个最大元素 在 n 2 中执行它很简单 我们可以使用堆或合并排序 n lg n 对它进行排序 然后得到它 但是有没有更好的方法 比 n lg n 更
  • 如何将字典和列表安全转储到 YAML 中?

    我想要输出为下面的 YAML item Food eat Food itemId 42536216 category fruit moreInfo organic 我已使用以下代码按照与上面相同的顺序进行打印 但输出未按预期进行 Code
  • Python 3 列表列表中的列表理解以转换类型

    考虑以下列表 list1 1 1 1 2 1 3 2 1 2 2 2 3 要理解字符串列表并将其转换为浮点数 可以使用 list1 0 float i for i in list1 0 但我尝试理解浮点数列表的列表并没有完全起作用 list
  • 捕获 subprocess.run() 的输入

    我在 Windows 上有一个交互式命令行 exe 文件 是由其他人编写的 当程序出现异常时 它会终止 并且我对程序的所有输入都会丢失 所以我正在编写一个 python 程序 它调用一个阻塞子进程subprocess run 并捕获所有输入
  • 查找字符串中最常见的子字符串的算法

    是否有任何算法可用于查找字符串中最常见的短语 或子字符串 例如 以下字符串将 hello world 作为其最常见的两个单词短语 hello world this is hello world hello world repeats thr
  • 你能用 C# 编写一个同样优雅的排列函数吗?

    我非常喜欢这个 6 行解决方案 并尝试在 C 中复制它 基本上 它会排列数组的元素 def permute xs pre if len xs 0 yield pre for i x in enumerate xs for y in perm
  • 程序堆栈真的会溢出吗?

    如果达到堆栈大小限制 处理器是否会导致操作系统出现 TRAP 从而防止堆栈溢出 P 我相信 Windows 确实有一个堆栈 当您到达末尾时它会增长 在 Visual Studio 编译器中 负责此操作的代码位于chkstk obj modu
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • 占据花车的地板

    我发现了两种在 Python 中占据发言权的方法 3 1415 1 and import math math floor 3 1415 第一种方法的问题是它返回一个浮点数 即3 0 第二种方法感觉很笨拙而且太长 在 Python 中是否有替
  • Java 中查看 ArrayList 是否包含对象的最有效方法

    我有一个 Java 对象的 ArrayList 这些对象有四个字段 我用其中两个字段来将对象视为与另一个对象相等 我正在寻找最有效的方法 给定这两个字段 以查看数组是否包含该对象 问题在于这些类是基于 XSD 对象生成的 因此我无法修改类本
  • 如何使用Python3、Selenium Chrome WebDriver在第一次请求之前预加载cookie?

    是否可以使用添加cookieadd cookie 对于一个域 比如说stackoverflow com在使用 Selenium Chrome WebDriver 进行实际请求之前get 到域上的页面stackoverflow com 尝试时
  • 局部变量在栈中的顺序是怎样的?

    我目前正在尝试对缓冲区溢出漏洞进行一些测试 这是易受攻击的代码 void win printf code flow successfully changed n int main int argc char argv volatile in
  • 线程安全的 C++ 堆栈

    我是 C 新手 正在编写一个多线程应用程序 不同的编写者将对象推入堆栈 读者将它们从堆栈中拉出 或至少将指针推入对象 C 中是否有任何内置结构可以在不添加锁定代码等的情况下处理此问题 如果没有 那么 Boost 库呢 EDIT 你好 感谢您
  • 寻找公共子集的算法

    I have N number of sets Si of Numbers each of a different size Let m1 m2 mn be the sizes of respective sets mi Si and M
  • python 中带有 lambda 函数字典的奇怪行为

    我编写了一个用于生成 lambda 常量函数字典的函数 它是一个更复杂函数的一部分 但我已将其简化为下面的代码 def function a interpolators for key in a keys interpolators key
  • 使用递归返回嵌套列表中第二小的数字

    我必须归还第二小的使用递归的 python 列表中的数字 以及no loops 我所做的是创建一个辅助函数 它返回列表中 最小 第二小的 值的元组 然后我只取tuple 1 in my second smallest func def s
  • 查找最接近点的多边形顶点的索引

    Heading 我需要找到最接近点的多边形的索引 所以在这种情况下 输出将是 4 和 0 这样 如果添加了红点 我就知 道将顶点放置在数组中的位置 有谁知道从哪里开始 抱歉 如果标题有误导性 我不知道如何正确表达它 In this case
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • 如何将Python3设置为Mac上的默认Python版本?

    有没有办法将 Python 3 8 3 设置为 macOS Catalina 版本 10 15 2 上的默认 Python 版本 我已经完成的步骤 看看它安装在哪里 ls l usr local bin python 我得到的输出是这样的
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • html 和井号中的撇号问题

    我有一个问题 我收到的一些电子邮件和网页设计的文本中带有 而不是 这会在某些电子邮件客户端上产生渲染问题 并且很难手动捕获所有问题 是否有任何类型的软件或在线脚本可以将这些符号 以及 符号 转换为 HTML 兼容文本 记事本或者什么东西可以
  • 为什么 Xcode 显示的内存使用量比 Instruments for SceneKit 应用程序多得多?

    我正在尝试调试为什么我们基于 SceneKit 的应用程序使用如此多的内存 但 Xcode 和 Instruments Allocations 似乎对所使用的内存量有非常不同的值 当我查看 Xcode 时 我看到类似的内容600 MB但是当
  • Hapi Lab 为什么所有测试都通过了却测试失败

    有谁知道 的含义吗 npm 错误 测试失败 请参阅上文了解更多详情 3 tests complete Test duration 873 ms The following leaks were detected lr npm ERR Tes
  • 将基于 RSA 的加密添加到无需证书的 WCF 服务

    我正在寻找一种使用 WCF 加密客户端和服务器之间的消息的方法 WCF 提供了很多内置的安全机制来加密客户端和服务器之间的流量 但似乎没有什么符合我的要求 我不想使用证书因为它们太复杂了 所以请不要建议我使用证书 我不需要保密 所以我想最好
  • Redis 的 Lua 脚本,用于对键的值求和

    我正在构建我的第一个 Redis 服务器端脚本 用于调试 而我缺乏 Lua 经验让我陷入了困境 本质上有一个 K V 对的数据集 包含约 1000 个值 我想从中列出与模式匹配的所有 KEY 例如在 redis cli 中 gt KEYS
  • C# - 是否可以创建一个可以使用参数从命令行运行的 Windows 窗体应用程序?

    我想要一个包含 UI 的 Windows 窗体应用程序 但我希望它使用一些参数 可能还有一个参数 从命令行运行 hide or visible false选项 如何读取命令行参数 并相应调整 如果您更改此默认主签名 STAThread st
  • 使用自定义 ErrorAttributes 测试 Spring Boot 应用程序?

    我正在尝试测试应该使用自定义错误属性的 Spring Boot RestController Bean public ErrorAttributes errorAttributes return new DefaultErrorAttrib
  • mongoose 是否像 SQL 一样支持 select 中的虚拟字段

    在 SQL 中 我可以使用 status 虚拟字段创建以下 SELECT 语句 SELECT CASE WHEN field 1 THEN sale ELSE none END as status 猫鼬中有类似的东西吗 是的 Mongoos
  • 跳过步骤 x 到步骤 y 并验证步骤 x 数据

    我实际上在 django 向导表单上遇到了一个大问题 我有3个步骤 第二步可以包含数据 也可以不包含数据 最后一步是文件上传步骤 在 WizardForm 类中 我重写了 get context data 方法并将其包含在其中 if sel
  • Python 2.7:“string”对象的“replace”方法已弃用

    我的 同事 刚刚告诉我replace的方法string对象已被弃用 并将在 3 xx 中删除 这是真的吗 如果是这样 我该如何替换它 带有示例 The 文档 http docs python org py3k library stdtype
  • System Verilog fork join - 实际上不是并行的?

    我正在学习系统verilog 并认为为每个进程创建单独的线程fork join 但是 我发现如果我有一个while在我的第一个进程中循环 我的第二个进程没有启动 这让我想到fork join实际上并不平行 class A task run
  • Silverlight Datagrid 上 UpdateSourceTrigger LostFocus 的解决方法?

    我有一个 Silverlight 2 应用程序 用于验证 OnTabSelectionChanged 数据 我立即开始希望 UpdateSourceTrigger 不仅仅允许 LostFocus 因为如果您单击选项卡而不离开控件 则 LIN
  • Rails:Net::SMTPAuthenticationError(535 身份验证失败:用户名/密码错误)

    我正在尝试在 Rails 应用程序中设置电子邮件 但收到错误 Net SMTPAuthenticationError 535 身份验证失败 用户名 密码错误 当我在生产环境中触发邮件操作时 控制器 class FeedbacksContro
  • Windows(手机)8.1 相机使用

    我正在创建一个 Windows 通用应用程序 我希望用户能够上传图片 并且用户应该可以选择当场拍摄并发送该图片 我使用 MediaCapture api 进行此工作 然而 我似乎只能使用一个摄像头 因此 例如 如果我的手机有前置摄像头和后置
  • 在文本框中的最后一个字符后设置焦点

    我有 3 个电话号码文本框 当用户键入时 它会自动从一个文本框移动到下一个文本框 当用户按退格键时 我可以将焦点移动到上一个文本框 问题是在 IE 中 焦点设置在文本框的开头 这是我的代码 在 Chrome 中运行良好 AreaCode l
  • 使用 Response.TransmitFile 下载文件但也包含页面源

    下面是有问题的代码 我下载了一个 csv 但是它将页面源附加到底部 关于如何防止这种情况有什么想法吗 var priceList Test const string downloadName PriceList csv var fs new
  • 使文件夹不受 SVN 管理

    是否可以从存储库中删除该文件夹 就像不会从每个用户的本地存储库中删除该文件夹一样 就我而言 有一个名为 config 的目录 旨在进行版本控制 现在我们决定从版本控制中删除该目录 但将其保留在每台计算机上 顺便将其添加到 svn ignor
  • 页面加载完成后图像消失

    我使用以下代码在页脚中显示图像 我看到图像几秒钟 但是页面完全加载后 图像消失了 有人知道这里出了什么问题吗 我正在使用 Rails 3 2 8 和 Chrome 在 Firefox 或 Safari 中不会发生这种情况 Thanks UP
  • 如何编写使用内置相机拍照的 Solo/Robotium 测试用例?

    从我的活动中 我执行 startActivityForResult MediaStore ACTION IMAGE CAPTURE 然后我进入内置相机活动 在本例中是在模拟器中 当我现在这样做时 独奏 clickOnButton 0 在我的
  • 单调的堆栈和队列。定义和例子

    到底什么是单调堆栈 例如 它与单调队列有何不同 例如 考虑以下整数数组 0 2 1 3 4 如果我从左到右处理这个数组并将其插入到单调递减的堆栈中 我应该在堆栈中看到什么 为什么 Here http www leetcode solutio