刷题日记(标题必须为什么不少于5个字!)

今天是2月15号,刷题日。

浅浅总结一波:

1.动态规划:

首先要找到动态规划方程,想明白dp[n-1]和dp[n]的关系,一般都是取最大值。

使用场景呢?就是那种莫名奇妙,想也想不明白应该怎么求出最大值,排列组合有一万种可能性的,这种人脑怎么可能列的出来,那就由程序替你完成这件事。你不需要当前的(dp[n])最大值,你只需要知道你的前一个加现在这个(dp[n-1]+nums[n]),这俩比较一下。

加粗字体就是灵魂啦!

2.递归:

递归也是一层一层想也想不明白,那怎么办呢?不想了。

三个点很重要:

第一,找到边界。你总不能无限递归吧,总要有个满足什么条件就结束了。

第二,注重当前的这一层。这一层满足什么条件才进到递归,你总要写吧。

第三,这一层与下一层。这一层和下一层是什么关系啊..怎么进到下一层啊。

总之,递归想明白这三点就够了,不用再无限的往下想了。

那什么时候使用递归呢?第一层满足这个条件,下一层也满足,也要进行一样的判断,链表、树的题大部分都需要递归。

3.树:

前序:上 左 右 (至于为什么是这个顺序,我要是没记错的话,前序是看哪个节点遍历一次)

中序:左 上 右 (同理,两次)

后序:右 上 左 (同理,三次)

(这都是深度遍历)

那代码怎么写呢?

不用想又是递归啦。

4.链表:

链表就是head代表这个链表,val代表当前节点是值,next代表下个节点开始的链表。

5.Set

Set在哪些题里用呢?

就比如一些数组的题,有重复的元素啊,有缺失的元素啊,这种,你就可以先用Set搞一个正常的数组出来,然后把在对比目标数组,

哦对了 还有一个常用的数组去重:var arr = [...new Set(targetArr)]

6.Map

说到Set就不得不提的Map,虽然今天没用到Map.

Map啥时候用呢?就是那种对应关系,因为Map的结构是{a->b,c->}这种,比如一个元素出现的次数...

7.还有一个点:

有点时候求n里边的h就非常别扭,这时候如果题目其实n-h,或者跟另一半相关,一定要想到利用另一半算。

8.还有最后最后一个:

这是我自己的反思:

1.对特殊值的处理

2.对时间、空间复杂度的处理

这都是我需要改进的地方。

还有我算法比较薄弱的地方:树、链表、贪心、二分等一堆。

我学过的:动态规划、前缀和、KMP、中心扩散法、滑动窗口,这些也要复习一下。

还有一个小小的心得:

就是这个力扣真的要经常刷,哪怕刷完忘了,但是捡起来也很快。而且第二次看之前的题,一部分就会觉得,好简单,当时居然都不会?。反正就是成为一个习惯吧。共勉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值