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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章