> For the complete documentation index, see [llms.txt](https://bryan-guner.gitbook.io/my-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bryan-guner.gitbook.io/my-docs/job-search/interview-prep/fang-prep-medium-article.md).

# FANG PREP (medium article)

## LinkedList <a href="#a365" id="a365"></a>

* [Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/)
* [Linked List Cycle II](https://leetcode.com/problems/linked-list-cycle-ii/)
* [Remove Duplicates from Sorted List](https://leetcode.com/problems/remove-duplicates-from-sorted-list/)
* [Remove Duplicates from Sorted List II](https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/)
* [Add Two Numbers](https://leetcode.com/problems/add-two-numbers/)

## Stack <a href="#bd22" id="bd22"></a>

* [Valid Parentheses](https://leetcode.com/problems/valid-parentheses/)
* [Reverse Linked List](https://leetcode.com/problems/reverse-linked-list/)

## Heap, PriorityQueue <a href="#id-22dd" id="id-22dd"></a>

* [Kth Largest Element in a Stream](https://leetcode.com/problems/kth-largest-element-in-a-stream/)
* [Top K Frequent Elements](https://leetcode.com/problems/top-k-frequent-elements/)
* [Find K Pairs with Smallest Sums](https://leetcode.com/problems/find-k-pairs-with-smallest-sums/)

## HashMap <a href="#id-1801" id="id-1801"></a>

* [Two Sum](https://leetcode.com/problems/two-sum/)
* [Group Anagrams](https://leetcode.com/problems/group-anagrams/)
* [Intersection of Two Arrays](https://leetcode.com/problems/intersection-of-two-arrays/)
* [Unique Email Addresses](https://leetcode.com/problems/unique-email-addresses/)
* [First Unique Character in a String](https://leetcode.com/problems/first-unique-character-in-a-string/)
* [Subarray Sum Equals K](https://leetcode.com/problems/subarray-sum-equals-k/)

## Graph, BFS, DFS <a href="#aa28" id="aa28"></a>

* [Number of Islands](https://leetcode.com/problems/number-of-islands/)
* [Max Area of Island](https://leetcode.com/problems/max-area-of-island/)
* [Number of Connected Components in an Undirected Graph](https://leetcode.com/problems/number-of-connected-components-in-an-undirected-graph/)
* [Word Ladder](https://leetcode.com/problems/word-ladder/)

## Tree, BT, BST <a href="#id-4708" id="id-4708"></a>

* [Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/)
* [Minimum Depth of Binary Tree](https://leetcode.com/problems/minimum-depth-of-binary-tree/)
* [Merge Two Binary Trees](https://leetcode.com/problems/merge-two-binary-trees/)
* [Convert Sorted Array to Binary Search Tree](https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/)
* [Path Sum](https://leetcode.com/problems/path-sum/)
* [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal/)
* [Binary Tree Zigzag Level Order Traversal](https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/)
* [Validate Binary Search Tree](https://leetcode.com/problems/validate-binary-search-tree/)
* [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/)

## Sort <a href="#id-5f99" id="id-5f99"></a>

Check out [Sorting Algorithms Animations](https://www.toptal.com/developers/sorting-algorithms). Understand in which data set radix sort or insertion sort are better than general heap/merge sort. Go each of sorting algorithms and understand pros and cons.

## Dynamic Programming <a href="#bc1e" id="bc1e"></a>

* [Paint Fence](https://leetcode.com/problems/paint-fence/)
* [Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/)
* [Maximum Subarray](https://leetcode.com/problems/maximum-subarray/)
* [Unique Paths](https://leetcode.com/problems/unique-paths/)
* [Unique Paths II](https://leetcode.com/problems/unique-paths-ii/)
* [House Robber](https://leetcode.com/problems/house-robber/)
* [House Robber II](https://leetcode.com/problems/house-robber-ii/)
* [Best Time to Buy and Sell Stock](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/)
* [Best Time to Buy and Sell Stock II](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/)
* [Word Break](https://leetcode.com/problems/word-break/)
* [Coin Change](https://leetcode.com/problems/coin-change/)

## Binary Search <a href="#id-8154" id="id-8154"></a>

* [Search Insert Position](https://leetcode.com/problems/search-insert-position/)
* [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/)
* [Capacity To Ship Packages Within D Days](https://leetcode.com/problems/capacity-to-ship-packages-within-d-days/)

## Recursion <a href="#id-16ad" id="id-16ad"></a>

* [Pow(x, n)](https://leetcode.com/problems/powx-n/)
* [K-th Symbol in Grammar](https://leetcode.com/problems/k-th-symbol-in-grammar/)
* [Split BST](https://leetcode.com/problems/split-bst/)

## Sliding Window <a href="#fedb" id="fedb"></a>

* [Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/)
* [Minimum Size Subarray Sum](https://leetcode.com/problems/minimum-size-subarray-sum/)

## Greedy + Backtracking <a href="#id-7aec" id="id-7aec"></a>

* [Permutations](https://leetcode.com/problems/permutations/)
* [Subsets](https://leetcode.com/problems/subsets/)
* [Combination Sum](https://leetcode.com/problems/combination-sum/)
* [Generate Parentheses](https://leetcode.com/problems/generate-parentheses/)

## Others <a href="#bffc" id="bffc"></a>

I could not put these problems in above categories, but good to solve.

* [Move Zeroes](https://leetcode.com/problems/move-zeroes/)
* [Meeting Rooms](https://leetcode.com/problems/meeting-rooms/)
* [Meeting Rooms II](https://leetcode.com/problems/meeting-rooms-ii/)
* [Is Subsequence](https://leetcode.com/problems/is-subsequence/)
* [Next Permutation](https://leetcode.com/problems/next-permutation/)
* [String to Integer (atoi)](https://leetcode.com/problems/string-to-integer-atoi/)
* [ZigZag Conversion](https://leetcode.com/problems/zigzag-conversion/)

## Summary <a href="#id-03ef" id="id-03ef"></a>

If you complete all questions and looking for more problem sets, I recommend checking out [Algorithm Questions](https://github.com/yangshun/tech-interview-handbook/tree/master/algorithms). They also summarize LeetCode problems by category.

If you finish Algorithm Questions too, check out [Algorithms and Coding Interviews](https://github.com/liyin2015/Algorithms-and-Coding-Interviews/blob/master/Preparing_for_the_real-world_software_engineering.pdf). My friend is writing it, and it’s worth to read. It provides more detail explanation and general approaches to the problems.

I mentioned these links in the middle of the stories, but here are links to keep track of your progress. Feel free to use them!

* [Google Spreadsheet](https://docs.google.com/spreadsheets/d/1Y98QKaYPazWImEt1nA_ocpGNJ-yQjH1FAsVQhUQ7OTw/edit?usp=sharing)
* [LeetCode problem list](https://leetcode.com/list/xo2bgr0r/)
