当前位置: 首页 > news >正文

海门市建设局网站平台研发

海门市建设局网站,平台研发,提高网站流量原则,网页看世界杯今日题目#xff1a; Problem 1: 栈的应用 155. 最小栈 | LeetCode20. 有效的括号 | LeetCode150. 逆波兰表达式求值 | LeetCode Problem 2: 单调栈 496. 下一个更大元素 I739. 每日温度503. 下一个更大元素 II 目录 Problem 1#xff1a;栈 - “先进后出”的应用LC 155. 最… 今日题目 Problem 1: 栈的应用 155. 最小栈 | LeetCode20. 有效的括号 | LeetCode150. 逆波兰表达式求值 | LeetCode Problem 2: 单调栈 496. 下一个更大元素 I739. 每日温度503. 下一个更大元素 II 目录 Problem 1栈 - “先进后出”的应用LC 155. 最小栈 【easy】LC 20. 有效的括号 【easy】LC 150. 逆波兰表达式求值 【easy】 Problem 2单调栈 【必会】✴️ 单调栈解决的基本问题找下一个更大元素 【classic】LC 496. 下一个更大元素 ILC 739. 每日温度LC 503. 下一个更大元素 II 【稍有难度】单调栈问题总结 今天主要学习了栈的一些应用和单调栈。 栈的基本应用已经学习过很多次了像括号匹配等问题比较熟悉了所以难度不大。单调栈比较重要它解决了“寻找每个元素的下一个更大元素”这个基本问题。我们要学会解决这个基本问题的代码思路并将其通过转化来解决具体问题。 所以单调栈是今天的重点要学会其解决“寻找下一个更大元素”这个基本问题的思路再学习如何将其用于解决具体问题。 Problem 1栈 - “先进后出”的应用 LC 155. 最小栈 【easy】 155. 最小栈 | LeetCode 这个题目做过多次了难度不大。 LC 20. 有效的括号 【easy】 20. 有效的括号 | LeetCode 括号匹配是使用栈解决的经典问题。通过这个题可以学会如何灵活运用 stack 来解决这个问题。 LC 150. 逆波兰表达式求值 【easy】 150. 逆波兰表达式求值 | LeetCode 也是一个栈的经典应用难度不大也可能是写过好几次了。 Problem 2单调栈 【必会】 单调栈用于解决找下一个更大元素的问题。这是 LeetCode 中一类经典问题。学会的话就不难没学的话一时也不太好想到思路。 首先需要学会使用单调栈的基本模板然后再学习如何利用它解决具体的问题。 ✴️ 单调栈解决的基本问题找下一个更大元素 【classic】 参考 单调栈结构解决三道算法题 | labuladong 首先明确单调栈所能解决的基本问题给一个数组 A找出其中每个元素的右边的下一个更大元素。比如 A [5, 1, 7]那么结果就是 answer [7, 7, -1]因为 5 和 1 的下一个更大元素都是 7而 7 没有下一个更大元素于是填充 -1 作为特殊值。当然answer 中的值也可以是 A 的下标索引这样就是 answer [2, 2, -1]因为 A[0] 和 A[1] 的下一个更大元素的索引都是 2所以 answer[0] 和 answer[1] 都是 2。 解决的思想是假设每个元素的值就是这个元素的身高让每个元素向后看比自己矮的都身高不够而第一个露出头来比自己高的那个元素就是答案比如下图 图片来自 labuladong 那寻找 answer 的方法从代码上实现思路就是声明一个 stack从后向前遍历 nums每次元素入栈前把栈顶上挤压掉身高小于等于自己的元素然后记录下栈顶也就是 nums[i] 身后更大的元素接着入栈继续下一轮循环直到遍历 nums 结束。代码如下 int[] findNextLarger(int[] nums) {int[] nextLarger new int[nums.length]; // 存放 answerListInteger stack new ArrayList(); // 单调栈// 从后向前遍历 numsfor (int i nums.length - 1; i 0; i--) {// 挤压掉身高小于等于自己的元素while (!stack.isEmpty() stack.getLast() nums[i]) {stack.removeLast();}// 记录栈顶元素作为 nums[i] 身后的更大元素nextLarger[i] stack.isEmpty()? -1: stack.getLast();// 入栈nextLarger.addLast(nums[i]);} return nextLarger; }这个问题中每个元素都被 push 一次最多被 pop 一次所以复杂度是 O ( n ) O(n) O(n)。 有了解决这个基本问题的代码模板我们就可以用这个单调栈的思路来解决一些具体的问题了。 LC 496. 下一个更大元素 I 496. 下一个更大元素 I | LeetCode 学会了上面的基本代码模板解决这个问题就会容易很多了。 这个题目的特殊之处在于我们需要找 nums2 的子集 nums1 在 nums2 中的下一个更大元素所以我们对 nums2 使用之前的方法来得到 nextLarger 数组然后需要再将其转换为 map记录着 元素 - 下一个更大元素 的映射然后 nums1 就可以使用这个 map 进行检索从而得到答案。 代码如下图 可以看出来解决这个问题的关键还是使用单调栈。 LC 739. 每日温度 739. 每日温度 | LeetCode 这也是对基本问题的一个变形我们再 nextLarger 中需要存的不是下一个更大的元素而是下一个更大元素的索引下标这样才能计算出索引下标的差值。学会基本问题之后难度也不大。 LC 503. 下一个更大元素 II 【稍有难度】 503. 下一个更大元素 II | LeetCode 这也是一个基本问题的变形基本问题中nums 是一个普通数组而这个题将 nums 定义为一种环形数组。 面对这种需求常用套路就是将数组长度翻倍 实现这种“翻倍”的效果的方式可以构造新数组、可以利用循环数组的技巧取模、可以两次循环等等都可以。 单调栈问题总结 我们学会了单调栈解决“下一个更大元素”这个基本问题的解题方法但在实际应用中题目往往会更加复杂一些这时我们需要把具体问题转化为单调栈相关问题来解决。
http://www.w-s-a.com/news/547071/

相关文章:

  • 一个网站建设的成本网站开发过程及要点
  • 监控视频做直播网站中国建筑人才网下载
  • 网站建设公司华网天下买送活动集团网站设计案例
  • 哪些网站比较容易做哪个网站做中高端衣服
  • 做php网站教程wordpress去水印
  • 深圳微网站建设公司哪家好潍坊专业做网站的公司
  • 网站的弹窗广告怎么做软件开发包括
  • 网站开发人员保密做最优秀的自己演讲视频网站
  • 一般做网站要多少钱怎样选择高性价比的建站公司
  • 免费私人网站建设软件高端网站设计平台高端网站设计企业
  • 响应式网站建设的应用场景怎么申请电商平台
  • 怎么做垂直自营网站游戏咨询网站建设目标是什么
  • 建设网站需要给钱吗建立网站三大基础
  • 金融公司网站 htmlwordpress 防火墙
  • 重庆智能建站模板网站投票系统 js
  • 网站维护的内容和步骤网站做什么内容
  • 万网虚拟主机建网站wordpress协调世界时
  • 微网站建设方式应用大全网站
  • 网站速度测速织梦模板下载
  • 环保网站建设公司排名汉阴网站建设
  • 自己做网站的二维码wordpress用户权限在哪改
  • 网站使用说明书网站建设公司的介绍
  • 推广型网站免费建设网站防盗链设置
  • 建设银行网站查开户行网站反链暴增怎么回事
  • centos7做网站软件实施工程师工资一般多少
  • 专业房产网站建设深圳建设交易集团
  • 政务网站建设标准项目经理接到网站开发怎么开展
  • 网站框架设计好后怎么做网站广告销售怎们做
  • asp技校网站保定八大平台公司
  • wordpress网站前端优化网站备案批量查询