Frequently used algorithms in Leetcode

1. Bianry search:

(1) Sorted array, but not linked-list. BS requires backtracking.Double linked-list is also not a good data structure! BS also requires randomly access every elements. Double linked-list must access each element from last (either left or right), and then this decrease the time complexity from logn to n.

(2) Two pointer: start and end. The key point of such problems is how to design the condition that jump out of the loop (start < end or start <= end). In this point, we should consider corner cases.

(3) Another point that may cause failure is that the middle index may equal to start (when start == end - 1). This may cause endless loop.

(4) A speed up way is to move index (new start or end) to the next different entry. (Ref: 3 sum)


2. Tree traversals:

(1) Recursive or non-recursive: recursive does not mean to slower than non-recursive.

(2) BFS or DFS.

(3) Pre-order, In-order or Post-order. The key to solve problems is to choose a proper method. (Post-order is better/must for recurse every pathes)


3. Graph.


4. Math:

4.1 Overflow: Use unsigned int or long long to take the number need to calculate.

4.2 

5. String


6. Stack and Queue.


7. Dynamic programming.


8. Sorts.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值