# Algo

- [Binary Search](/algo/binary-search.md)
- [Classical Binary Search](/algo/binary-search/classical-binary-search.md): ID: 457; easy; 经典二分查找问题
- [First Position of Target](/algo/binary-search/first-position-of-target.md): ID: 14; easy; 二分查找
- [Last Position of Target](/algo/binary-search/last-position-of-target.md): ID: 458; easy; 目标最后位置
- [Guess Number Higher or Lower](/algo/binary-search/guess-number-higher-or-lower.md): ID: 662; easy; 猜数游戏
- [Search in a Big Sorted Array](/algo/binary-search/search-in-a-big-sorted-array.md): ID: 447; medium; 在大数组中查找
- [Total Occurrence of Target](/algo/binary-search/total-occurrence-of-target.md): ID: 462; easy; 目标出现总和
- [First Bad Version](/algo/binary-search/first-bad-version.md): ID; 74; medium; 第一个错误的代码版本
- [Find Minimum in Rotated Sorted Array](/algo/binary-search/find-minimum-in-rotated-sorted-array.md): ID: 159; medium; 寻找旋转排序数组中的最小值
- [Maximum Number in Mountain Sequence](/algo/binary-search/maximum-number-in-mountain-sequence.md): ID: 585; medium; 山脉序列中的最大值
- [Search a 2D Matrix](/algo/binary-search/search-a-2d-matrix.md): ID: 28; easy; 搜索二维矩阵
- [Search a 2D Matrix II](/algo/binary-search/search-a-2d-matrix-ii.md): ID: 38; medium; 搜索二维矩阵（二）
- [Search for a Range](/algo/binary-search/search-for-a-range.md): ID: 61; medium; 搜索区间
- [Smallest Rectangle Enclosing Black Pixels](/algo/binary-search/smallest-rectangle-enclosing-black-pixels.md): ID: 600; hard; 包裹黑色像素点的最小矩形
- [Find Peak Element](/algo/binary-search/find-peak-element.md): ID: 75; medium; 寻找峰值
- [Search in Rotated Sorted Array](/algo/binary-search/search-in-rotated-sorted-array.md): ID: 62; medium; 搜索旋转排序数组
- [Wood Cut](/algo/binary-search/wood-cut.md): ID; 183; hard; 木材加工
- [Find the Duplicate Number](/algo/binary-search/find-the-duplicate-number.md): ID: 633; medium; 寻找重复的数
- [Sqrt(x) II](/algo/binary-search/sqrt-x-ii.md): ID: 586; medium; 对x开根II
- [Maximum Average Subarray II](/algo/binary-search/maximum-average-subarray-ii.md): ID: 617; medium; 子数组的最大平均值 II
- [Copy Books](/algo/binary-search/copy-books.md): ID: 437; medium; 书籍复印
- [How Many Problem Can I Accept](/algo/binary-search/how-many-problem-can-i-accept.md): ID: 937; medium; 可以完成的题目数量
- [Linked List](/algo/linked-list.md)
- [Insert Node in Sorted Linked List](/algo/linked-list/insert-node-in-sorted-linked-list.md): ID: 219; easy; 在排序链表中插入一个节点
- [Merge Two Sorted Lists](/algo/linked-list/merge-two-sorted-lists.md): ID: 165; easy; 合并两个排序链表
- [Merge K Sorted Lists](/algo/linked-list/merge-k-sorted-lists.md): ID: 104; medium; 合并k个排序链表算法
- [LRU Cache](/algo/linked-list/lru-cache.md): ID: 134; hard; LRU缓存策略
- [Reverse Linked List II](/algo/linked-list/reverse-linked-list-ii.md): ID: 36; medium; 翻转链表（二）
- [Copy List with Random Pointer](/algo/linked-list/copy-list-with-random-pointer.md): ID: 105; medium; 复制带随机指针的链表
- [Reverse Nodes in k-Group](/algo/linked-list/reverse-nodes-in-k-group.md): ID: 450; hard; K组翻转链表
- [Add Two Numbers](/algo/linked-list/add-two-numbers.md): ID: 2; medium
- [Swap Nodes in Pairs](/algo/linked-list/swap-nodes-in-pairs.md): ID: 24; medium
- [Rotate List](/algo/linked-list/rotate-list.md): ID: 61; medium
- [Linked List Cycle](/algo/linked-list/linked-list-cycle.md): ID: 141; easy
- [Linked List Cycle II](/algo/linked-list/linked-list-cycle-ii.md): ID: 142; medium
- [Intersection of Two Linked Lists](/algo/linked-list/intersection-of-two-linked-lists.md): ID: 160; easy
- [Remove Linked List Elements](/algo/linked-list/remove-linked-list-elements.md): ID: 203; easy
- [Reverse Linked List](/algo/linked-list/reverse-linked-list.md): ID: 206; easy
- [Delete Node in a Linked List](/algo/linked-list/delete-node-in-a-linked-list.md): ID: 237; easy
- [Odd Even Linked List](/algo/linked-list/odd-even-linked-list.md): ID: 328; medium
- [Partition List](/algo/linked-list/partition-list.md): ID: 86; medium
- [Recursion Basics](/algo/recursion-basics.md)
- [Fibonacci](/algo/recursion-basics/fibonacci.md): ID: 366; naive; 斐波纳契数列
- [Double Factorial](/algo/recursion-basics/double-factorial.md): ID: 771; easy; 二阶阶乘
- [Reverse Order Storage](/algo/recursion-basics/reverse-order-storage.md): ID: 822; easy; 相反的顺序存储
- [Linked List Weighted Sum In Reverse Order](/algo/recursion-basics/linked-list-weighted-sum-in-reverse-order.md): ID: 786; easy;
- [Binary Tree](/algo/binary-tree.md)
- [1. Traversal](/algo/binary-tree/1.-traversal.md)
- [Binary Tree Preorder Traversal](/algo/binary-tree/1.-traversal/binary-tree-preorder-traversal.md): ID: 144; easy
- [Binary Tree Inorder Traversal](/algo/binary-tree/1.-traversal/binary-tree-inorder-traversal.md): ID: 94; easy
- [Binary Tree Postorder Traversal](/algo/binary-tree/1.-traversal/binary-tree-postorder-traversal.md): ID: 145; easy
- [Construct Binary Tree from Inorder and Postorder Traversal](/algo/binary-tree/1.-traversal/construct-binary-tree-from-inorder-and-postorder-traversal.md): ID: 72; medium; 中序遍历和后序遍历树构造二叉树
- [Minimum Depth of Binary Tree](/algo/binary-tree/1.-traversal/minimum-depth-of-binary-tree.md): ID: 111; easy
- [Find Leaves of Binary Tree](/algo/binary-tree/1.-traversal/find-leaves-of-binary-tree.md): ID: 650; medium; 二叉树叶子顺序遍历
- [Reconstruct Itinerary](/algo/binary-tree/1.-traversal/reconstruct-itinerary.md): ID: 1288; medium;
- [2. Classical Questions](/algo/binary-tree/2.-classical-questions.md)
- [Maximum Depth of Binary Tree](/algo/binary-tree/2.-classical-questions/maximum-depth-of-binary-tree.md): ID: 104; easy
- [Average of Levels in Binary Tree](/algo/binary-tree/2.-classical-questions/average-of-levels-in-binary-tree.md): ID: 1115; easy; 二叉树每层的平均数
- [Binary Tree Leaf Sum](/algo/binary-tree/2.-classical-questions/binary-tree-leaf-sum.md): ID: 481; easy; 二叉树叶子节点之和
- [Invert Binary Tree](/algo/binary-tree/2.-classical-questions/invert-binary-tree.md): ID: 226; easy
- [Binary Tree Path Sum](/algo/binary-tree/2.-classical-questions/binary-tree-path-sum.md): ID: 376; easy;  二叉树的路径和
- [Binary Tree Path Sum II](/algo/binary-tree/2.-classical-questions/binary-tree-path-sum-ii.md): ID: 246; medium; 二叉树的路径和 II
- [Binary Tree Path Sum III](/algo/binary-tree/2.-classical-questions/binary-tree-path-sum-iii.md): ID: 472; hard; 二叉树的路径和 III
- [Clone Binary Tree](/algo/binary-tree/2.-classical-questions/clone-binary-tree.md): ID: 375; medium; 克隆二叉树
- [Sum Root to Leaf Numbers](/algo/binary-tree/2.-classical-questions/sum-root-to-leaf-numbers.md): ID: 1353; medium; 根节点到叶节点求和
- [Binary Tree Level Sum](/algo/binary-tree/2.-classical-questions/binary-tree-level-sum.md): ID: 482; easy; 二叉树的某层节点之和
- [Binary Tree Paths](/algo/binary-tree/2.-classical-questions/binary-tree-paths.md): ID: 257; easy
- [3. Binary Search Tree](/algo/binary-tree/3.-binary-search-tree.md)
- [Insert Node in a Binary Search Tree](/algo/binary-tree/3.-binary-search-tree/insert-node-in-a-binary-search-tree.md): ID: 85; easy; 在二叉查找树中插入节点
- [Remove Node in Binary Search Tree](/algo/binary-tree/3.-binary-search-tree/remove-node-in-binary-search-tree.md): ID: 87; hard; 删除二叉查找树的节点
- [Validate Binary Search Tree](/algo/binary-tree/3.-binary-search-tree/validate-binary-search-tree.md): ID: 98; medium; 验证二叉查找树
- [Trim a Binary Search Tree](/algo/binary-tree/3.-binary-search-tree/trim-a-binary-search-tree.md): ID: 701; medium; 修剪二叉搜索树
- [Search Range in Binary Search Tree](/algo/binary-tree/3.-binary-search-tree/search-range-in-binary-search-tree.md): ID: 11; medium; 二叉查找树中搜索区间
- [Inorder Successor in BST](/algo/binary-tree/3.-binary-search-tree/inorder-successor-in-bst.md): ID: 448; medium; 二叉查找树的中序后继
- [Binary Search Tree Iterator](/algo/binary-tree/3.-binary-search-tree/binary-search-tree-iterator.md): ID: 86; hard; 二叉查找树迭代器
- [Recover Binary Search Tree](/algo/binary-tree/3.-binary-search-tree/recover-binary-search-tree.md): ID: 691; medium; 恢复二叉搜索树
- [4. Divide and Conquer](/algo/binary-tree/4.-divide-and-conquer.md)
- [Balanced Binary Tree](/algo/binary-tree/4.-divide-and-conquer/balanced-binary-tree.md): ID: 110; easy
- [Minimum Subtree](/algo/binary-tree/4.-divide-and-conquer/minimum-subtree.md): ID: 596; easy; 最小子树
- [Subtree with Maximum Average](/algo/binary-tree/4.-divide-and-conquer/subtree-with-maximum-average.md): ID: 597; easy
- [Maximum Subtree](/algo/binary-tree/4.-divide-and-conquer/maximum-subtree.md): ID: 628; easy
- [Lowest Common Ancestor of a Binary Tree](/algo/binary-tree/4.-divide-and-conquer/lowest-common-ancestor-of-a-binary-tree.md): ID: 88; medium
- [Lowest Common Ancestor II](/algo/binary-tree/4.-divide-and-conquer/lowest-common-ancestor-ii.md): ID: 474; easy
- [Lowest Common Ancestor III](/algo/binary-tree/4.-divide-and-conquer/lowest-common-ancestor-iii.md): ID: 578; medium
- [Binary Tree Maximum Path Sum II](/algo/binary-tree/4.-divide-and-conquer/binary-tree-maximum-path-sum-ii.md): ID: 475; medium
- [Binary Tree Maximum Path Sum](/algo/binary-tree/4.-divide-and-conquer/binary-tree-maximum-path-sum.md): ID: 94; medium
- [Path Sum III](/algo/binary-tree/4.-divide-and-conquer/path-sum-iii.md): ID: 437; medium
- [Convert Sorted Array to Binary Search Tree](/algo/binary-tree/convert-sorted-array-to-binary-search-tree.md): ID; 108; easy
- [Path Sum](/algo/binary-tree/path-sum.md): ID: 112; easy
- [Lowest Common Ancestor of a Binary Search Tree](/algo/binary-tree/lowest-common-ancestor-of-a-binary-search-tree.md): ID: 235; easy
- [Sum of Left Leaves](/algo/binary-tree/sum-of-left-leaves.md): ID: 404; easy
- [Minimum Absolute Difference in BST](/algo/binary-tree/minimum-absolute-difference-in-bst.md): ID: 530; easy
- [Minimum Distance Between BST Nodes](/algo/binary-tree/minimum-distance-between-bst-nodes.md): ID: 783; easy
- [Convert Sorted List to Binary Search Tree](/algo/binary-tree/convert-sorted-list-to-binary-search-tree.md): ID: 109; medium
- [Range Sum of BST](/algo/binary-tree/range-sum-of-bst.md): ID: 938; easy
- [Kth Smallest Element in a BST](/algo/binary-tree/kth-smallest-element-in-a-bst.md): ID: 230; medium
- [Find Largest Value in Each Tree Row](/algo/binary-tree/find-largest-value-in-each-tree-row.md): ID: 515; medium
- [Sorting](/algo/sorting.md)
- [Sort Integers](/algo/sorting/sort-integers.md): ID: 463; naive
- [Merge Two Sorted Arrays](/algo/sorting/merge-two-sorted-arrays.md): ID: 6; easy
- [Reverse Pair](/algo/sorting/reverse-pair.md): ID: 532; medium
- [Sort List](/algo/sorting/sort-list.md): ID: 98; medium
- [Partition Array](/algo/sorting/partition-array.md): ID: 31; medium
- [Sort Colors](/algo/sorting/sort-colors-1.md): ID: 75; medium
- [Kth Largest Element](/algo/sorting/kth-largest-element.md): ID: 5; medium
- [Multi-keyword Sort](/algo/sorting/multi-keyword-sort.md): ID: 846; easy
- [Two Pointers](/algo/two-pointers.md)
- [Window Sum](/algo/two-pointers/window-sum.md): ID: 604; easy
- [Two Sum - Difference equals to target](/algo/two-pointers/two-sum-difference-equals-to-target.md): ID: 610; medium
- [Valid Palindrome](/algo/two-pointers/valid-palindrome.md): ID: 415; medium
- [Remove Duplicates from Sorted Array](/algo/two-pointers/remove-duplicates-from-sorted-array.md): ID: 26: Easy
- [Recover Rotated Sorted Array](/algo/two-pointers/recover-rotated-sorted-array.md): ID: 39; easy
- [Two Sum II - Input array is sorted](/algo/two-pointers/two-sum-ii-input-array-is-sorted.md): ID: 167; easy
- [Two Sum - Unique pairs](/algo/two-pointers/two-sum-unique-pairs.md): ID: 587; medium
- [Two Sum - Closest to target](/algo/two-pointers/two-sum-closest-to-target.md): ID: 533; medium
- [Queue & Stack](/algo/queue-and-stack.md)
- [Implement Queue by Interface](/algo/queue-and-stack/implement-queue-by-interface.md): ID: 546; easy
- [Implement Stack](/algo/queue-and-stack/implement-stack.md): ID: 495; easy
- [Implement Queue by Two Stacks](/algo/queue-and-stack/implement-queue-by-two-stacks.md): ID: 40; medium
- [Implement Stack by Two Queues](/algo/queue-and-stack/implement-stack-by-two-queues.md): ID: 494; easy
- [Binary Tree Level Order Traversal](/algo/queue-and-stack/binary-tree-level-order-traversal.md): ID: 69; easy
- [Valid Parentheses](/algo/queue-and-stack/valid-parentheses.md): ID: 20; easy
- [Min Stack](/algo/queue-and-stack/min-stack.md): ID: 12; medium
- [Largest Rectangle in Histogram](/algo/queue-and-stack/largest-rectangle-in-histogram.md): ID: 122; hard
- [Evaluate Reverse Polish Notation](/algo/queue-and-stack/evaluate-reverse-polish-notation.md): ID: 424; medium
- [Implement Queue by Linked List II](/algo/queue-and-stack/implement-queue-by-linked-list-ii.md): ID: 493; easy
- [Basic Calculator II](/algo/queue-and-stack/basic-calculator-ii.md): ID: 980; medium
- [Moving Average from Data Stream](/algo/queue-and-stack/moving-average-from-data-stream.md): ID: 642; easy
- [Reveal Cards In Increasing Order](/algo/queue-and-stack/reveal-cards-in-increasing-order.md): ID: 950; medium
- [Longest Valid Parentheses](/algo/queue-and-stack/longest-valid-parentheses.md): ID: 193; medium
- [Hash Table](/algo/hash-table.md)
- [Rehashing](/algo/hash-table/rehashing.md): ID: 129; medium
- [Valid Anagram](/algo/hash-table/valid-anagram.md): ID: 242; easy
- [Two Sum](/algo/hash-table/two-sum.md): ID: 1; Easy
- [Contiguous Array](/algo/hash-table/contiguous-array.md): ID: 525; medium
- [Anagrams](/algo/hash-table/anagrams.md): ID: 171; medium
- [Remove Duplicate Numbers in Array](/algo/hash-table/remove-duplicate-numbers-in-array.md): ID: 521; easy
- [Friendship Service](/algo/hash-table/friendship-service.md): ID: 560; easy
- [Heap & Priority Queue](/algo/heap-and-priority-queue.md)
- [Heapify](/algo/heap-and-priority-queue/heapify.md): ID: 130; medium
- [Top k Largest Numbers II](/algo/heap-and-priority-queue/top-k-largest-numbers-ii.md): ID: 545; medium
- [K Closest Points](/algo/heap-and-priority-queue/k-closest-points.md): ID: 612; medium; \*
- [Kth Smallest Number in Sorted Matrix](/algo/heap-and-priority-queue/kth-smallest-number-in-sorted-matrix.md): ID: 401; medium
- [Find Median from Data Stream](/algo/heap-and-priority-queue/find-median-from-data-stream.md): ID: 81; hard
- [Sliding Window Median](/algo/heap-and-priority-queue/sliding-window-median.md): ID: 360; hard
- [Trapping Rain Water II](/algo/heap-and-priority-queue/trapping-rain-water-ii.md): ID: 364; hard
- [High Five](/algo/heap-and-priority-queue/high-five.md): ID: 613; medium
- [BFS](/algo/bfs.md)
- [1. BFS in Binary Tree](/algo/bfs/1.-bfs-in-binary-tree.md)
- [Check Full Binary Tree](/algo/bfs/1.-bfs-in-binary-tree/check-full-binary-tree.md): ID: 726; medium
- [Binary Tree Level Order Traversal II](/algo/bfs/1.-bfs-in-binary-tree/binary-tree-level-order-traversal-ii.md): ID: 70; medium
- [Binary Tree Maximum Path Sum II](/algo/bfs/1.-bfs-in-binary-tree/binary-tree-maximum-path-sum-ii.md): ID: 475; medium
- [Convert Binary Tree to Linked Lists by Depth](/algo/bfs/1.-bfs-in-binary-tree/convert-binary-tree-to-linked-lists-by-depth.md): ID: 242; easy
- [2. Connected Graph & Topologic Sorting](/algo/bfs/2.-connected-graph-and-topologic-sorting.md)
- [Search Graph Nodes](/algo/bfs/2.-connected-graph-and-topologic-sorting/search-graph-nodes.md): ID: 618; medium
- [Graph Valid Tree](/algo/bfs/2.-connected-graph-and-topologic-sorting/graph-valid-tree.md): ID: 178; medium
- [Connected Component in Undirected Graph](/algo/bfs/2.-connected-graph-and-topologic-sorting/connected-component-in-undirected-graph.md): ID: 431; medium
- [Topological Sorting](/algo/bfs/2.-connected-graph-and-topologic-sorting/topological-sorting.md): ID: 127; medium
- [Course Schedule](/algo/bfs/2.-connected-graph-and-topologic-sorting/course-schedule.md): ID: 615; medium
- [Course Schedule II](/algo/bfs/2.-connected-graph-and-topologic-sorting/course-schedule-ii.md): ID: 616; medium
- [Sequence Reconstruction](/algo/bfs/2.-connected-graph-and-topologic-sorting/sequence-reconstruction.md): ID: 605; medium
- [Clone Graph](/algo/bfs/2.-connected-graph-and-topologic-sorting/clone-graph.md): ID: 137; medium
- [Alien Dictionary](/algo/bfs/2.-connected-graph-and-topologic-sorting/alien-dictionary.md): ID: 892; hard
- [Array](/algo/array.md)
- [Remove Element](/algo/array/remove-element.md): ID: 27; Easy
- [Search Insert Position](/algo/array/search-insert-position.md): ID: 35; easy
- [Maximum Subarray](/algo/array/maximum-subarray.md): ID: 35; easy
- [Plus One](/algo/array/plus-one.md): ID: 66; Easy
- [Merge Sorted Array](/algo/array/merge-sorted-array.md): ID: 88; easy
- [Pascal's Triangle](/algo/array/pascals-triangle.md): ID: 118; easy
- [Pascal's Triangle II](/algo/array/pascals-triangle-ii.md): ID: 119; easy
- [Best Time to Buy and Sell Stock](/algo/array/best-time-to-buy-and-sell-stock.md): ID: 121; easy
- [Best Time to Buy and Sell Stock II](/algo/array/best-time-to-buy-and-sell-stock-ii.md): ID: 122; easy
- [Majority Element](/algo/array/majority-element.md): ID: 169; easy
- [Contains Duplicate](/algo/array/contains-duplicate.md): ID: 217; easy
- [Contains Duplicate II](/algo/array/contains-duplicate-ii.md): ID: 219; easy
- [Summary Ranges](/algo/array/summary-ranges.md): ID: 228; easy
- [Missing Number](/algo/array/missing-number.md): ID: 268; easy
- [Move Zeroes](/algo/array/move-zeroes.md): ID: 283; easy
- [Third Maximum Number](/algo/array/third-maximum-number.md): ID: 414; easy
- [Binary Search](/algo/array/binary-search.md): ID: 704; easy
- [Pairs of Songs With Total Durations Divisible by 60](/algo/array/pairs-of-songs-with-total-durations-divisible-by-60.md): ID: 1010; medium
- [3Sum](/algo/array/3sum.md): ID: 15; medium
- [Median of Two Sorted Arrays](/algo/array/median-of-two-sorted-arrays.md): ID: 4; hard
- [Running Sum of 1d Array](/algo/array/running-sum-of-1d-array.md): ID: 1480; easy
- [Container With Most Water](/algo/array/container-with-most-water.md): ID: 11; medium
- [String](/algo/string.md)
- [Longest Substring Without Repeating Characters](/algo/string/longest-substring-without-repeating-characters.md): ID: 3; medium
- [Roman to Integer](/algo/string/roman-to-integer.md): ID: 13; easy
- [Implement strStr()](/algo/string/implement-strstr.md): ID: 28; easy
- [Reverse Words in a String](/algo/string/reverse-words-in-a-string.md): ID: 151; medium
- [First Unique Character in a String](/algo/string/first-unique-character-in-a-string.md): ID: 209; easy
- [Count Unique Characters of All Substrings of a Given String](/algo/string/count-unique-characters-of-all-substrings-of-a-given-string.md): ID: 828; hard
- [Math](/algo/math.md)
- [Pow(x, n)](/algo/math/pow-x-n.md): ID: 50; medium
- [Narcissistic Number](/algo/math/narcissistic-number.md): ID: 147; easy
- [A + B Problem](/algo/math/a-+-b-problem.md): ID: 1; naive
- [Dynamic Programming](/algo/dynamic-programming.md)
- [Fibonacci Number](/algo/dynamic-programming/fibonacci-number.md): ID: 509; easy
- [N-th Tribonacci Number](/algo/dynamic-programming/n-th-tribonacci-number.md): ID: 1137; easy
- [Climbing Stairs](/algo/dynamic-programming/climbing-stairs.md): ID: 70; easy
- [Min Cost Climbing Stairs](/algo/dynamic-programming/min-cost-climbing-stairs.md): ID: 746; easy
- [LeetCode vs. LintCode Table](/algo/leetcode-vs.-lintcode-table.md): For counting duplicated submissions on both platforms
