--- id: best-practice-questions title: Best Practice Questions --- Here is a suggested schedule for revising and practicing algorithm questions on [LeetCode](https://leetcode.com). Sign up for an account if you don't already have one, it's critical to your success in interviewing! When practicing, you are advise to treat it like a real coding interview and check through thoroughly before submitting. Consider even manually coming up with some tests cases and running through them to verify correctness! ## Week 1 In week 1, we will start off easy and do a mix of easy and medium questions on arrays and strings. Arrays and strings are the most common types of questions to be found in interviews; gaining familiarity with them will help in building strong fundamentals to better handle tougher questions. - [Two Sum](https://leetcode.com/problems/two-sum/) - [Contains Duplicate](https://leetcode.com/problems/contains-duplicate/) - [Best Time to Buy and Sell Stock](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/) - [Valid Anagram](https://leetcode.com/problems/valid-anagram/) - [Valid Parentheses](https://leetcode.com/problems/valid-parentheses/) - [Product of Array Except Self](https://leetcode.com/problems/product-of-array-except-self/) - [Maximum Subarray](https://leetcode.com/problems/maximum-subarray/) - [3Sum](https://leetcode.com/problems/3sum/) - [Merge Intervals](https://leetcode.com/problems/merge-intervals/) - [Group Anagrams](https://leetcode.com/problems/group-anagrams/) #### Optional - [Maximum Product Subarray](https://leetcode.com/problems/maximum-product-subarray/) - [Search in Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/) ## Week 2 The focus of week 2 is on Linked List, string and matrix-based questions. The goal is to learn the common routines dealing with linked lists, traversing matrices and sequence analysis (arrays/strings) techniques such as sliding window. - [Reverse a Linked List](https://leetcode.com/problems/reverse-linked-list/) - [Detect Cycle in a Linked List](https://leetcode.com/problems/linked-list-cycle/) - [Container With Most Water](https://leetcode.com/problems/container-with-most-water/) - [Find Minimum in Rotated Sorted Array](https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/) - [Longest Repeating Character Replacement](https://leetcode.com/problems/longest-repeating-character-replacement/) - [Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/) - [Minimum Window Substring](https://leetcode.com/problems/minimum-window-substring/) - [Number of Islands](https://leetcode.com/problems/number-of-islands/) - [Remove Nth Node From End Of List](https://leetcode.com/problems/remove-nth-node-from-end-of-list/) - [Pacific Atlantic Water Flow](https://leetcode.com/problems/pacific-atlantic-water-flow/) - [Merge K Sorted Lists](https://leetcode.com/problems/merge-k-sorted-lists/) ## Week 3 The focus of week 3 is on non-linear data structures like trees, graphs and heaps. You should be familiar with the various tree traversal (in-order, pre-order, post-order) algorithms and graph traversal algorithms such as breadth-first search and depth-first search. In my experience, using more advanced graph algorithms (Dijkstra's and Floyd-Warshall) is quite rare and usually not necessary. - [Validate Binary Search Tree](https://leetcode.com/problems/validate-binary-search-tree/) - [Invert/Flip Binary Tree](https://leetcode.com/problems/invert-binary-tree/) - [Palindromic Substrings](https://leetcode.com/problems/palindromic-substrings/) - [Non-overlapping Intervals](https://leetcode.com/problems/non-overlapping-intervals/) - [Serialize and Deserialize Binary Tree](https://leetcode.com/problems/serialize-and-deserialize-binary-tree/) - [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) - [Top K Frequent Elements](https://leetcode.com/problems/top-k-frequent-elements/) - [Clone Graph](https://leetcode.com/problems/clone-graph/) - [Course Schedule](https://leetcode.com/problems/course-schedule/) - [Binary Tree Maximum Path Sum](https://leetcode.com/problems/binary-tree-maximum-path-sum/) #### Optional - [Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/) - [Same Tree](https://leetcode.com/problems/same-tree/) - [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal/) - [Encode and Decode Strings (Leetcode Premium)](https://leetcode.com/problems/encode-and-decode-strings/) ## Week 4 Week 4 builds up on knowledge from previous weeks but questions are of increased difficulty. Expect to see such level of questions during interviews. We get to use more advanced data structures such as heaps and tries in this week. - [Add and Search Word](https://leetcode.com/problems/add-and-search-word-data-structure-design/) - [Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree/) - [Subtree of Another Tree](https://leetcode.com/problems/subtree-of-another-tree/) - [Kth Smallest Element in a BST](https://leetcode.com/problems/kth-smallest-element-in-a-bst/) - [Lowest Common Ancestor of BST](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/) - [Merge K Sorted Lists](https://leetcode.com/problems/merge-k-sorted-lists/) - [Find Median from Data Stream](https://leetcode.com/problems/find-median-from-data-stream/) - [Insert Interval](https://leetcode.com/problems/insert-interval/) - [Longest Consecutive Sequence](https://leetcode.com/problems/longest-consecutive-sequence/) - [Word Search II](https://leetcode.com/problems/word-search-ii/) #### Optional - [Meeting Rooms (Leetcode Premium)](https://leetcode.com/problems/meeting-rooms/) - [Meeting Rooms II (Leetcode Premium)](https://leetcode.com/problems/meeting-rooms-ii/) - [Alien Dictionary (Leetcode Premium)](https://leetcode.com/problems/alien-dictionary/) - [Graph Valid Tree (Leetcode Premium)](https://leetcode.com/problems/graph-valid-tree/) - [Number of Connected Components in an Undirected Graph (Leetcode Premium)](https://leetcode.com/problems/number-of-connected-components-in-an-undirected-graph/) ## Week 5 Week 5 focuses on Dynamic Programming questions. - [Climbing Stairs](https://leetcode.com/problems/climbing-stairs/) - [Coin Change](https://leetcode.com/problems/coin-change/) - [Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/) - [Word Break Problem](https://leetcode.com/problems/word-break/) - [Combination Sum](https://leetcode.com/problems/combination-sum-iv/) - [House Robber](https://leetcode.com/problems/house-robber/) - [House Robber II](https://leetcode.com/problems/house-robber-ii/) - [Decode Ways](https://leetcode.com/problems/decode-ways/) - [Unique Paths](https://leetcode.com/problems/unique-paths/) - [Jump Game](https://leetcode.com/problems/jump-game/)