下一章 上一章 目录 设置
25、9.05 整理前期不 ...
-
今天的任务也不太难,要去健身房健身,然后调整作息
今天锻炼完,健身房竟然没热水,幸好不是夏天,不然我真的都要绝望了......\\
把单调栈的三题弄懂:
496. 下一个更大元素 I
单调栈+哈希
昨天修勾给我讲了一下,我今天写了写,知道啥意思了,就是从右往左入栈,先找到一个数组里符合要求的值,然后再对nums1数组对map查询,一个个输入进去。
知识点:
1.如何更高效地计算nums2中每个元素右边的第一个更大的值
2.如何存储第 1 个子问题的结果。
503. 下一个更大元素 II
和496不一样的是,它不是找每个元素右边的第一个最大的值,而是需要循环找这个元素最大的值。
凡是看到寻找下一个最大/小的这种题目,必选单调栈,然后会有许多变种,可以具体情形具体处理
知识点:
如何求下一个更大的元素
如何实现循环数组
题目思路:可以遍历一次数组,如果元素是单调递减的(则他们的「下一个更大元素」相同),我们就把这些元素保存,直到找到一个较大的元素;把该较大元素逐一跟保存了的元素比较,如果该元素更大,那么它就是前面元素的「下一个更大元素」。找个我已经掌握了。下一个重点就是如何将数组变成一个循环的环。一种实现方式是,把数组复制一份到数组末尾,这样虽然不是严格的循环数组,但是对于本题已经足够了,因为本题对数组最多遍历两次。
这题不需要和上一题一样用一个map先存储每个元素后一个更大的值,直接遍历一遍,讲值存储进去即可。
739. 每日温度
丢进栈内的不是数组里的数值,而是数组里数值的下标。
单调栈要根据题意判断是单调递减还是单调递增,很有意思,终于把单调栈弄懂了,太难了,呜呜呜呜
BASE CASE 和备忘录的初始值怎么定:
931. 下降路径最小和
大概知道啥意思,但是对代码的把握还是不够清楚。。。。。
前两天将计算机网络和c++相关知识过了一遍,今天可能会再快速过一遍吧