1. Mở đầu
Sau bài viết Học gì để có thể xin intern/fresher ở các công ty big tech thì mình đã nhận được rất nhiều sự quan tâm của các bạn. Nên hôm nay mình sẽ chia sẻ lộ trình để ôn luyệt thuật toán tốt nhất dành cho người mới và cả người đã có kinh nghiệm. Các bạn hãy học tuần tự theo từng mục của bài viết nhé.
2. Lộ trình ôn luyện thuật toán
2.1. Arrays & Hashing
Đây là dạng dễ nhất trong lộ trình này, nhưng cũng là nền tảng để học các phần sau, các bạn nên luyện tập kĩ.
Một số dạng bài easy:
- Contains Duplicate: https://leetcode.com/problems/contains-duplicate/
- Valid Anagram: https://leetcode.com/problems/valid-anagram/
- Two Sum: https://leetcode.com/problems/two-sum/
Một số dạng bài ở mức Medium:
- Group Anagrams: https://leetcode.com/problems/group-anagrams/
- Top K Frequent Elements : https://leetcode.com/problems/top-k-frequent-elements/
- Encode and Decode Strings: https://leetcode.com/problems/encode-and-decode-strings/
- Product of Array Except Self: https://leetcode.com/problems/product-of-array-except-self/
- Valid Sudoku: https://leetcode.com/problems/valid-sudoku/
- Longest Consecutive Sequence: https://leetcode.com/problems/longest-consecutive-sequence/
2.2. Two Pointers
Độ khó easy:
- Valid Palindrome: https://leetcode.com/problems/valid-palindrome/
Độ khó medium
- Two Sum II Input Array Is Sorted: https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/
- 3Sum: https://leetcode.com/problems/3sum/
2.3. Stack
Độ khó easy:
- Valid Parentheses: https://leetcode.com/problems/valid-parentheses/
Độ khó medium
- Min Stack : https://leetcode.com/problems/min-stack/
- Evaluate Reverse Polish Notation: https://leetcode.com/problems/evaluate-reverse-polish-notation/
- Generate Parentheses: https://leetcode.com/problems/generate-parentheses/
- Daily Temperatures: https://leetcode.com/problems/daily-temperatures/
- Car Fleet: https://leetcode.com/problems/car-fleet/
2.4. Binary Search
Độ khó easy:
- Binary Search:https://leetcode.com/problems/binary-search/
Độ khó medium
- Search a 2D Matrix; https://leetcode.com/problems/search-a-2d-matrix/
- Koko Eating Bananas: https://leetcode.com/problems/koko-eating-bananas/
- Find Minimum In Rotated Sorted Array: https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/
- Search In Rotated Sorted Array: https://leetcode.com/problems/search-in-rotated-sorted-array/
- Time Based Key Value Store: https://leetcode.com/problems/time-based-key-value-store/
2.5. Linked List
Độ khó easy:
- Reverse Linked List : https://leetcode.com/problems/reverse-linked-list/
- Linked List Cycle: https://leetcode.com/problems/linked-list-cycle/
- Merge Two Sorted Lists: https://leetcode.com/problems/merge-two-sorted-lists/
Độ khó medium
- Reorder List: https://leetcode.com/problems/reorder-list/
- Remove Nth Node From End of List: https://leetcode.com/problems/remove-nth-node-from-end-of-list/
- Copy List With Random Pointer: https://leetcode.com/problems/copy-list-with-random-pointer/
- Add Two Numbers: https://leetcode.com/problems/add-two-numbers/
3. Tổng kết
Ở phần một này chỉ liệt kê 5 dạng bài cơ bản, tuy nhiên để có thể hiểu rõ và vận dụng nhuần nhuyễn thì cũng cần kha khá thời gian để luyện tập. Hầu hết các công ty vừa và nhỏ thì chỉ phỏng vấn 5 dạng này thôi, và chủ yếu là những bài easy. Các công ty bigtech thì đa số cũng tập trung vào 5 dạng này nhưng ở độ khó medium, hard.