倒时差倒了两周了,终于能回归正常了,尝试每天做两个,赶上进度。。。
LeetCode455 分发饼干
题目链接/文章讲解/视频讲解:代码随想录
第一想法:先把两个数列由小到大排序好;两个pointer,i与j,分别指向g的第一位与s的第一位;然后通过一个while loop i < len(g) and j < len(s),如果s[j] >= g[i]则找到一个满足条件的,如果不满足,则j+=1,让饼干的pointer指向下一个饼干,然后继续比较;速度: 排序O(nlogn), while loop一定会把s遍历一遍, n=len(s), O(n), 最终O(nlogn + n) = O(nlogn)
看完随想录后:我的想法非常直接的想去遍历两个数组,尽管在写代码的时候才发现饼干的大小才是关键,饼干数组是决定最终有多少个饼干被分发出去的关键,所以饼干已经是要被先遍历一遍的,但是在一开始分析的时候,并没有注意这一点。看完随想录后,发现代码可以写的更加紧凑。
难点:如果能在分析题目的阶段就知道饼干数量更重要,说明理解的应该更透彻
LeetCode376 摆动序列
题目链接/文章讲解/视频讲解:代码随想录
第一想法:一个一个计算差值,发现有不满足要求的,直接跳过。。。完全不对。base case那三个能过,但是后面遇到数组差值为0的时候,就会卡住。
看完随想录后:需要考虑的东西很多,还是感觉理解的不到位,但是又说不上来。
难点:找到所有的例子,通过例子总结逻辑。
LeetCode53. 最大子序和
题目链接/文章讲解/视频讲解:代码随想录
第一想法:第一个背下来的用动态规划做的题。
看完随想录后:确实没思考过用贪心的方法来做,不过感觉跟动态规划的感觉很类似。
难点:没背诵下来
今日收获:376这道题,收获最多,需要知道的细节最多。