算法刷题经验

要记住的一些规律

同余:两个数对k的余数相等,则两数之差可以被k整除

通用经验

  1. 注意看题目给定的条件,如果没有特殊说明,只关注合理的输入。
  2. 如果调试不过,注意: =写成了==
  3. 用例不完全通过的时候就构造边界用例
  4. 使用队列的时候用collections.deque,比直接使用列表模拟队列效率要高。eg:
que = deque()
que.append()
que.appendleft()
que.pop()
que.popleft()	

设计题

  1. 一定要理解题意,大概理解题意后,将给出的例子都推演一遍。

二分法

  • 两段性
  1. 二分的本质是两段性,并非单调性。只要一段满足某个性质,另一段不满足某个性质,就可以用二分。
  2. 二段性还能继续细分,不仅仅只有满足01特性(满足/不满足)的二段性可以使用二分法。满足1?特性(一定满足/不一定满足)也可以用二分法。
  • 边界处理
    mid是向左取整的话,left每次都要+1。向右取整,right每次都要+1.

动态规划

  1. dp数组中确定初始值
  2. 确定递推公式,即状态转移方程。动态规划就是找到递推公式,根据递推公式逐步推出最终结果。

前缀和

【应用范围】:求解恰好等于某一个值的场景。
【求解思路】:将恰好为某个值转化成容易求解的两个值差的情况。
【应用场景】:

  • 满足条件的窗口长度是可变的,可以将可变的窗口长度转化为不可变的窗口长度,迂回处理。

滑动窗

【应用场景】:要窗口长度能是固定的时候采用滑窗处理。

递归

  1. 遇到递归的问题,最好画出递归树。
  2. 递归问题,第一步寻找递归结束条件。

子数组性质

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值