Leetcode8月10日 打卡

111 阅读2分钟

1.leetcode986题 区间列表的交集

和之前那个merge list 有点像

自己一开始也是没有思路,用双指针,其实就两种情况,一种是不相交,不相交的时候 判断哪个在前面就移动哪个,否则相交的时候,就取交集,开始取两点的最大值,结束取两点的最小值。 还要移动,哪个结束的早就移动哪一个

2.leetcode354题 俄罗斯套娃问题

就这就这就这就这??!!!??!

自己思考了一下,先排序! 发现这个题 就是最长上升子序列的翻版题! 直接dp就好,但是这个题的dp过程还不是很熟悉

最长上升子序列 这个题,不需要连续 所以很不一样 leetcode300题,还可以优化的!! 用二分来做,可以在leetcodeCN上面找

3.leetcode231题 判断是否是 2的幂

爆int了 怎么处理?

这个题自己思路想到了,就是2的幂 肯定只有一个1

对于负数是肯定不成立的! 但是自己有想到 如果负数 算不算2的幂呢?

4.leetcode 309题 最佳买卖股票时机含冷冻期

dp! 知道是dp 但是没想到有三种状态,还有一种是 冷冻期!!

设置三种状态 然后转移 就可以了

这个直接处理边界更好! dp[n - 1]

5.leetcode337题 打家劫舍iii

树形dp问题,一开始想用之前那个最大活跃度来做,发现不太合适? 自己好像没懂那个最大活跃的精髓,待会再看看

这个就是传说中的树形dp啊!! 利用两个, 一个是选当前节点,然后子节点就不选! 还有就是不选当前节点,那么子节点可以选 可以不选,但是要取里面的最大值

6.leetcode 581题 最短可排序连续数组

先排序,然后两个指针 从左 从右找不相等的第一个值, 相减就得到长度

但是实现起来,后面这步很难!! 不太好实现!

比较好的方法 一个是 定义一个len变量,然后一个指针从前 一个指针从后开始指 相等的时候len -- 然后循环两次 得到最后的len

7.leetcode 213题 打家劫舍ii

之前那个是单列数组dp问题 这个是环形数组dp问题

滚动数组的形式

这个题的做法和之前acwing上的那个做法 完全不一样了感觉! 这个思路更好些!! 而且对于213题来说更好

8.leetcode198题 打家劫舍i

用滚动数组方法来求解!!!再刷一次!! 这个题折磨了好久!!