Question  D  F  Data Structure  Algorithms  Comments 

3Sum  3  5  array  two pointers  
3Sum Closest  3  1  array  two pointers  
4Sum  3  2  array  
Add Binary  2  4  string  two pointers math 

Add Two Numbers  3  4  linked list  two pointers math 

Anagrams  3  4  string hashtable 

BackPack I  4  4  backpack  dp  
BackPack II  4  4  backpack  dp  
Balanced Binary Tree  1  2  tree  dfs  
Best Time to Buy and Sell Stock  2  1  array  dp  
Best Time to Buy and Sell Stock II  3  1  array  greedy  
Best Time to Buy and Sell Stock III  4  1  array  dp  
Binary Search Tree Iterator  5  2  BST  Iterator  
Binary Tree Inorder Traversal  4  3  tree hashtable 
recursion morris stack 

Binary Tree Level Order Traversal  3  4  tree  bfs  
Binary Tree Level Order Traversal II  3  1  tree  bfs  
Binary Tree Maximum Path Sum  4  2  tree  dfs  
Binary Tree Zigzag Level Order Traversal  4  3  queue tree 
bfs stack 

Climbing Stairs  2  5  dp  
Clone Graph  4  3  Graph  BFS HashMap 
4* 
Combination Sum  3  3  array  combination DFS  
Combination Sum II  4  2  array  combination  
Combinations  3  4  combination  
Construct Binary Tree from Inorder and Postorder Traversal  3  3  array tree 
dfs  
Construct Binary Tree from Preorder and Inorder Traversal  3  3  array tree 
dfs  
Container With Most Water  3  2  array  two pointers  
Convert Sorted Array to Binary Search Tree  2  3  tree  dfs  
Convert Sorted List to Binary Search Tree  4  3  linked list  recursion two pointers 

Copy List with Random Pointer  4  2  LinkedList  O(1)方法还没做  
Count and Say  2  2  string  two pointers  
Count of Smaller Number I  4  3  array  sort+binary search segment tree 

Count of Smaller Number II  5  3  array  segment tree  值型线段树 
Data Stream Median  5  2  heap  min/max heap  10* new comparator用法 
Decode Ways  3  4  string  recursion dp 

Distinct Subsequences  4  2  string  dp  
Divide Two Integers  4  3  binary search math 

Edit Distance  4  3  string  dp  
First Missing Positive  5  2  array  sort  
Flatten Binary Tree to Linked List  3  3  tree  recursion stack 

Generate Parentheses  3  4  string  dfs  
Gray Code  4  2  combination  
Hash Function  3  1  hash math 
要知道如何避免乘法overflow  
Heapify  3  3  Heap  掌握siftup/siftdown两种方法 知道时间复杂度怎么算的  
House Robber  3  2  dp  
Implement strStr()  4  5  string  two pointers KMP rolling hash 

Insert Interval  4  5  array linked list 
red black tree sort merge 

Integer to Roman  3  4  math  
Interleaving String  5  2  string  recursion dp 

Jump Game  3  2  array  
Jump Game II  4  2  array  
K Sum  5  2  backpack  dp  
K Sum II  3  2  DFS  时间复杂度多少？  
Largest Rectangle in Histogram  5  2  array  stack  
Length of Last Word  1  1  string  
Letter Combinations of a Phone Number  3  3  string  dfs  
Linked List Cycle I  3  3  LinkedList  fast slow pointers  
Linked List Cycle II  4  3  LinkedList  fast slow pointers  
Longest Common Prefix  2  1  string  
Longest Common Subsequence  4  2  2 Strings  dp  
Longest Common Substring  4  2  2 Strings  dp  
Longest Consecutive Sequence  4  3  array  
Longest Increasing Subsequence  3  3  array  dp  
Longest Increasing Continuous subsequence I  3  3  array  dp  
Longest Increasing Continuous subsequence II  4  3  array  dp  
Longest Palindromic Substring  4  2  string  
Longest Substring Without Repeating Characters  3  2  string hashtable 
two pointers  
Longest Valid Parentheses  4  1  string  dp  
Lowest Common Ancestor  4  2  Binary Tree  Divide&Conquer  
LRU Cache  5  2  Doubly linked list  Cache概念 基本功 

Majority Number I  3  2  抵消的概念  
Majority Number II  4  2  抵消的概念  
Majority Number III  5  2  抵消的概念  
Max Square  3  3  dp  
Max Tree  5  1  stack  有空重新做一遍  
Maximal Rectangle  5  1  array  dp stack 

Maximum Depth of Binary Tree  1  1  tree  dfs  
Maximum Product Subarray  4  3  Array  SubArray prefix sum 
SubArray系列问题 用类似前缀和解决 
Maximum Subarray I  3  3  array  prefix sum  
Maximum Subarray II  4  2  array  
Maximum Subarray III  5  1  array  
Median of Two Sorted Arrays  5  3  array  binary search  
Merge Intervals  4  5  array linked list 
red black tree sort merge 

Merge k Sorted Lists  3  4  linked list heap 
sort two pointers merge 
用heap再做一遍 
Merge Sorted Array  2  5  array  two pointers merge 

Merge Two Sorted Lists  2  5  linked list  sort two pointers merge 

Min Stack  3  3  Stack  
Minimum Adjustment Cost  5  1  array  dp  
Minimum Depth of Binary Tree  1  1  tree  dfs  
Minimum Path Sum  3  3  array  dp  
Minimum Subarray  3  3  subarray  prefix sum  掌握前缀和概念 
Minimum Window Substring  4  2  string  two pointers  
Multiply Strings  4  3  string  two pointers math 

N Queens  4  3  array  dfs  
N Queens II  4  3  array  dfs  
Next Permutation  5  2  array  permutation  
Palindrome Number  2  2  math  
Palindrome Partitioning  3  4  string  dfs  
Palindrome Partitioning II  4  3  string  dp  
Partition List  3  3  linked list  two pointers dummy node 

Pascal's Triangle  2  1  array  
Pascal's Triangle II  2  1  array  
Path Sum  1  3  tree  dfs  
Path Sum II  2  2  tree  dfs  
Permutation Sequence  5  1  permutation  math  
Permutations  3  4  array  permutation  
Permutations II  4  2  array  permutation  
Plus One  1  2  array  math  
Populating Next Right Pointers in Each Node  3  3  tree  dfs  
Populating Next Right Pointers in Each Node II  4  2  tree  dfs  
Pow(x,n)  3  5  binary search  math  
Recover Binary Search Tree  4  2  tree  dfs  
Regular Expression Matching  5  3  string  recursion dp 

Rehashing  3  1  Hashing  怎么对负数取模  
Remove Duplicates from Sorted Array  1  3  array  two pointers  
Remove Duplicates from Sorted Array II  2  2  array  two pointers  
Remove Duplicates from Sorted List  1  3  linked list  
Remove Duplicates from Sorted List II  3  3  linked list  dummy node  
Remove Element  1  4  array  two pointers  
Remove Nth Node From End of List  2  3  linked list  fast slow pointers  
Reorder List  4  2  LinkedList  findMid/reverse/dummyHead  
Restore IP Addresses  3  3  string  dfs  
Reverse Integer  2  3  math  
Reverse Linked List I  2  3  Linked List  dummy node  1 
Reverse Linked List II  3  2  linked list  two pointers  
Reverse Nodes in k Group  4  2  linked list  recursion two pointers 

Roman to Integer  2  4  math  
Rotate Image  4  2  array  
Rotate List  3  2  linked list  two pointers  
Same Tree  1  1  tree  dfs  
Scramble String  5  2  string  recursion dp 

Search a 2D Matrix  3  3  array  binary search  
Search for a Range  4  3  array  binary search  
Search in Rotated Sorted Array  4  3  array  binary search  
Search in Rotated Sorted Array II  5  3  array  binary search  
Search Insert Position  2  2  array  
Search Range in Binary Search Tree  3  3  BST  
Set Matrix Zeroes  3  5  array  
Simplify Path  3  1  string  stack  
Sliding Window Maximum  5  2  array  deque  Deque d = new ArrayDeque<>()，以及pollFirst(), pollLast(), offerFirst, offerLast(), peekFirst(), peekLast()用法以及时间复杂度分析，以及为什么要用deque 
Sliding Window Median  5  2  array  heap  两个heap维护一个median结构，注意hashHeap在此的运用和时间复杂度关系 
Sort List  4  2  List  fast slow pointers  涉及到findLinkedListMiddle, mergeLinkedList等基本功 
Sort Colors  4  2  array  sort two pointers 

Spiral Matrix  4  2  array  
Spiral Matrix II  3  2  array  
Sqrt(x)  4  4  binary search  
String to Integer (atoi)  2  5  string  math  
Subsets  3  4  array  recursion combination 

Subsets II  4  2  array  recursion combination 

Substring with Concatenation of All Words  3  1  string  two pointers  
Sudoku Solver  4  2  array  dfs  
Sum Root to Leaf Numbers  2  4  tree  dfs  
Surrounded Regions  4  3  array  bfs dfs 

Swap Nodes in Pairs  2  4  linked list  
Symmetric Tree  1  2  tree  dfs  
Text Justification  4  2  string  
Topological Sorting  4  3  Graph  BFS indegrees 
4* 
Trailing Zeros  3  1  math  
Trapping Rain Water  4  2  array  two pointers stack 

Triangle  3  1  array  dp  
Two Sum  2  5  array set 
sort two pointers 

Unique Binary Search Trees  3  1  tree  dp  
Unique Binary Search Trees II  4  1  tree  dp dfs 

Unique Paths  2  3  array  dp  
Unique Paths II  3  3  array  dp  
Valid Number  2  5  string  math  
Valid Palindrome  2  5  string  two pointers  
Valid Parentheses  2  5  string  stack  
Valid Sudoku  2  2  array  
Validate Binary Search Tree  3  5  tree  dfs  
Wildcard Matching  5  3  string  recursion dp greedy 
FB喜欢 
Word Break  4  3  String  dp  
Word Ladder  3  5  graph  bfs shortest path 

Word Ladder II  5  1  graph  bfs+dfs  10* 
Word Search  3  4  array  dfs  
ZigZag Conversion  3  1  string 
Credits to:
1. All the questions are from Leetcode Online Judge/Lintcode
2. Some of the stats in (DifficultyFrequencyData StructureAlgorithms)columns are defined by peking2 in http://leetcode.cloudfoundry.com/
3. Some of the solutions are from 九章算法