An open API service indexing awesome lists of open source software.

https://github.com/convexwf/leetcode

Solution to Leetcode problems. 在此记录 Leetcode 题目的解法思路,以C++为主。
https://github.com/convexwf/leetcode

algorithm cpp data-structures leetcode

Last synced: 9 months ago
JSON representation

Solution to Leetcode problems. 在此记录 Leetcode 题目的解法思路,以C++为主。

Awesome Lists containing this project

README

          

# Leetcode Solution

| **All** | **Locked** | **Unlocked** | **Easy** | **Medium** | **Hard** |
| :---: | :---: | :---: | :---: | :---: | :---: |
| 1056 | 153 | 903 | 240 | 599 | 217 |

## Table of Leetcode Solution

| Title | Difficulty | Tags | Solution |
| --- | --- | --- | --- |
| [0001.Two Sum](.doc/0001.two-sum.md) | Easy (52.31%) | array, hash-table, sort | [cpp](.cpp/0001.two-sum.cpp), [rust](.rust/0001.two-sum.rs) |
| [0002.Add Two Numbers](.doc/0002.add-two-numbers.md) | Medium (42.66%) | linked-list, arithmetic | [cpp](.cpp/0002.add-two-numbers.cpp) |
| [0003.Longest Substring Without Repeating Characters](.doc/0003.longest-substring-without-repeating-characters.md) | Medium (34.70%) | hash-table, sliding-window | [cpp](.cpp/0003.longest-substring-without-repeating-characters.cpp) |
| [0004.Median of Two Sorted Arrays](.doc/0004.median-of-two-sorted-arrays.md) | Hard (39.79%) | array, binary-search, divide-and-conquer | [cpp](.cpp/0004.median-of-two-sorted-arrays.cpp) |
| [0005.Longest Palindromic Substring](.doc/0005.longest-palindromic-substring.md) | Medium (33.77%) | string, dynamic-programming, palindrome | [cpp](.cpp/0005.longest-palindromic-substring.cpp) |
| [0006.Zigzag Conversion](.doc/0006.zigzag-conversion.md) | Medium (47.76%) | string | [cpp](.cpp/0006.zigzag-conversion.cpp) |
| [0007.Reverse Integer](.doc/0007.reverse-integer.md) | Medium (28.52%) | math | [cpp](.cpp/0007.reverse-integer.cpp) |
| [0008.String to Integer (atoi)](.doc/0008.string-to-integer-atoi.md) | Medium (17.18%) | math, string | [cpp](.cpp/0008.string-to-integer-atoi.cpp) |
| [0009.Palindrome Number](.doc/0009.palindrome-number.md) | Easy (56.14%) | math, palindrome | [cpp](.cpp/0009.palindrome-number.cpp) |
| [0010.Regular Expression Matching](.doc/0010.regular-expression-matching.md) | Hard (28.14%) | dynamic-programming, backtracking, string | [cpp](.cpp/0010.regular-expression-matching.cpp) |
| [0011.Container With Most Water](.doc/0011.container-with-most-water.md) | Medium (55.13%) | array, two-pointers | [cpp](.cpp/0011.container-with-most-water.cpp) |
| [0012.Integer to Roman](.doc/0012.integer-to-roman.md) | Medium (64.59%) | greedy | [cpp](.cpp/0012.integer-to-roman.cpp) |
| [0013.Roman to Integer](.doc/0013.roman-to-integer.md) | Easy (61.05%) | hash-table, string | [cpp](.cpp/0013.roman-to-integer.cpp) |
| [0014.Longest Common Prefix](.doc/0014.longest-common-prefix.md) | Easy (42.67%) | string, sort | [cpp](.cpp/0014.longest-common-prefix.cpp) |
| [0015.3Sum](.doc/0015.3-sum.md) | Medium (34.41%) | array, two-pointers, sorting, target-sum | [cpp](.cpp/0015.3-sum.cpp) |
| [0016.3Sum Closest](.doc/0016.3-sum-closest.md) | Medium (45.79%) | array, two-pointers, sorting, target-sum | [cpp](.cpp/0016.3-sum-closest.cpp) |
| [0017.Letter Combinations of a Phone Number](.doc/0017.letter-combinations-of-a-phone-number.md) | Medium (60.27%) | string, backtracking, depth-first-search, breadth-first-search, recursion | [cpp](.cpp/0017.letter-combinations-of-a-phone-number.cpp) |
| [0018.4Sum](.doc/0018.4-sum.md) | Medium (36.23%) | array, two-pointers, target-sum | [cpp](.cpp/0018.4-sum.cpp) |
| [0019.Remove Nth Node From End of List](.doc/0019.remove-nth-node-from-end-of-list.md) | Medium (45.15%) | linked-list, fast-slow-pointers | [cpp](.cpp/0019.remove-nth-node-from-end-of-list.cpp) |
| [0020.Valid Parentheses](.doc/0020.valid-parentheses.md) | Easy (40.54%) | string, stack | [cpp](.cpp/0020.valid-parentheses.cpp) |
| [0021.Merge Two Sorted Lists](.doc/0021.merge-two-sorted-lists.md) | Easy (64.18%) | linked-list | [cpp](.cpp/0021.merge-two-sorted-lists.cpp) |
| [0022.Generate Parentheses](.doc/0022.generate-parentheses.md) | Medium (74.44%) | string, backtracking, parentheses | [cpp](.cpp/0022.generate-parentheses.cpp) |
| [0023.Merge k Sorted Lists](.doc/0023.merge-k-sorted-lists.md) | Hard (52.59%) | linked-list, heap | [cpp](.cpp/0023.merge-k-sorted-lists.cpp) |
| [0024.Swap Nodes in Pairs](.doc/0024.swap-nodes-in-pairs.md) | Medium (64.24%) | linked-list, recursion | [cpp](.cpp/0024.swap-nodes-in-pairs.cpp) |
| [0025.Reverse Nodes in k-Group](.doc/0025.reverse-nodes-in-k-group.md) | Hard (58.47%) | linked-list | [cpp](.cpp/0025.reverse-nodes-in-k-group.cpp) |
| [0026.Remove Duplicates from Sorted Array](.doc/0026.remove-duplicates-from-sorted-array.md) | Easy (55.42%) | array, two-pointers, in-place-algorithm | [cpp](.cpp/0026.remove-duplicates-from-sorted-array.cpp) |
| [0027.Remove Element](.doc/0027.remove-element.md) | Easy (56.58%) | array, two-pointers, in-place-algorithm | [cpp](.cpp/0027.remove-element.cpp) |
| [0028.Find the Index of the First Occurrence in a String](.doc/0028.find-the-index-of-the-first-occurrence-in-a-string.md) | Easy (42.16%) | string | |
| [0029.Divide Two Integers](.doc/0029.divide-two-integers.md) | Medium (17.43%) | math, arithmetic, bit-manipulation | [cpp](.cpp/0029.divide-two-integers.cpp) |
| [0030.Substring with Concatenation of All Words](.doc/0030.substring-with-concatenation-of-all-words.md) | Hard (32.51%) | hash-table, sliding-window, string | [cpp](.cpp/0030.substring-with-concatenation-of-all-words.cpp) |
| [0031.Next Permutation](.doc/0031.next-permutation.md) | Medium (39.77%) | array, permutation | [cpp](.cpp/0031.next-permutation.cpp) |
| [0032.Longest Valid Parentheses](.doc/0032.longest-valid-parentheses.md) | Hard (34.08%) | string, dynamic-programming, stack, parentheses, subarray | [cpp](.cpp/0032.longest-valid-parentheses.cpp) |
| [0033.Search in Rotated Sorted Array](.doc/0033.search-in-rotated-sorted-array.md) | Medium (40.66%) | array, binary-search, search-in-rotated-sorted-array | [cpp](.cpp/0033.search-in-rotated-sorted-array.cpp) |
| [0034.Find First and Last Position of Element in Sorted Array](.doc/0034.find-first-and-last-position-of-element-in-sorted-array.md) | Medium (44.19%) | array, binary-search | [cpp](.cpp/0034.find-first-and-last-position-of-element-in-sorted-array.cpp) |
| [0035.Search Insert Position](.doc/0035.search-insert-position.md) | Easy (45.77%) | array, binary-search | [cpp](.cpp/0035.search-insert-position.cpp) |
| [0036.Valid Sudoku](.doc/0036.valid-sudoku.md) | Medium (59.55%) | hash-table, bit-manipulation | [cpp](.cpp/0036.valid-sudoku.cpp) |
| [0037.Sudoku Solver](.doc/0037.sudoku-solver.md) | Hard (60.92%) | hash-table, backtracking, bit-manipulation | [cpp](.cpp/0037.sudoku-solver.cpp) |
| [0038.Count and Say](.doc/0038.count-and-say.md) | Medium (54.89%) | string, recursion | [cpp](.cpp/0038.count-and-say.cpp) |
| [0039.Combination Sum](.doc/0039.combination-sum.md) | Medium (71.28%) | sort, backtracking, combination | [cpp](.cpp/0039.combination-sum.cpp) |
| [0040.Combination Sum II](.doc/0040.combination-sum-ii.md) | Medium (54.43%) | array, backtracking, sort, combination | [cpp](.cpp/0040.combination-sum-ii.cpp) |
| [0041.First Missing Positive](.doc/0041.first-missing-positive.md) | Hard (39.42%) | array | [cpp](.cpp/0041.first-missing-positive.cpp) |
| [0042.Trapping Rain Water](.doc/0042.trapping-rain-water.md) | Hard (61.04%) | array, two-pointers, monotonic-stack, stack | [cpp](.cpp/0042.trapping-rain-water.cpp) |
| [0043.Multiply Strings](.doc/0043.multiply-strings.md) | Medium (40.29%) | string, arithmetic | [cpp](.cpp/0043.multiply-strings.cpp) |
| [0044.Wildcard Matching](.doc/0044.wildcard-matching.md) | Hard (27.85%) | dynamic-programming, backtracking, string | [cpp](.cpp/0044.wildcard-matching.cpp) |
| [0045.Jump Game II](.doc/0045.jump-game-ii.md) | Medium (40.41%) | array, greedy | [cpp](.cpp/0045.jump-game-ii.cpp) |
| [0046.Permutations](.doc/0046.permutations.md) | Medium (78.23%) | depth-first-search, backtracking | [cpp](.cpp/0046.permutations.cpp) |
| [0047.Permutations II](.doc/0047.permutations-ii.md) | Medium (59.09%) | depth-first-search, backtracking, hash-table | [cpp](.cpp/0047.permutations-ii.cpp) |
| [0048.Rotate Image](.doc/0048.rotate-image.md) | Medium (74.15%) | array, matrix | [cpp](.cpp/0048.rotate-image.cpp) |
| [0049.Group Anagrams](.doc/0049.group-anagrams.md) | Medium (68.43%) | hash-table, string, sort | [cpp](.cpp/0049.group-anagrams.cpp) |
| [0050.Pow(x, n)](.doc/0050.pow-x-n.md) | Medium (34.70%) | math, divide-and-conquer, bit-manipulation | [cpp](.cpp/0050.pow-x-n.cpp) |
| [0051.N-Queens](.doc/0051.n-queens.md) | Hard (67.99%) | backtracking | [cpp](.cpp/0051.n-queens.cpp) |
| [0052.N-Queens II](.doc/0052.n-queens-ii.md) | Hard (73.76%) | backtracking | [cpp](.cpp/0052.n-queens-ii.cpp) |
| [0053.Maximum Subarray](.doc/0053.maximum-subarray.md) | Medium (50.72%) | divide-and-conquer, dynamic-programming, array, subarray | [cpp](.cpp/0053.maximum-subarray.cpp) |
| [0054.Spiral Matrix](.doc/0054.spiral-matrix.md) | Medium (49.28%) | matrix, array | [cpp](.cpp/0054.spiral-matrix.cpp) |
| [0055.Jump Game](.doc/0055.jump-game.md) | Medium (38.50%) | array, greedy | [cpp](.cpp/0055.jump-game.cpp) |
| [0056.Merge Intervals](.doc/0056.merge-intervals.md) | Medium (47.24%) | sort, interval | [cpp](.cpp/0056.merge-intervals.cpp) |
| [0057.Insert Interval](.doc/0057.insert-interval.md) | Medium (41.42%) | sort, interval, array | [cpp](.cpp/0057.insert-interval.cpp) |
| [0058.Length of Last Word](.doc/0058.length-of-last-word.md) | Easy (51.26%) | string, two-pointers | [cpp](.cpp/0058.length-of-last-word.cpp) |
| [0059.Spiral Matrix II](.doc/0059.spiral-matrix-ii.md) | Medium (70.98%) | array, matrix | [cpp](.cpp/0059.spiral-matrix-ii.cpp) |
| [0060.Permutation Sequence](.doc/0060.permutation-sequence.md) | Hard (46.75%) | math, permutation | [cpp](.cpp/0060.permutation-sequence.cpp) |
| [0061.Rotate List](.doc/0061.rotate-list.md) | Medium (37.64%) | linked-list, fast-slow-pointers | [cpp](.cpp/0061.rotate-list.cpp) |
| [0062.Unique Paths](.doc/0062.unique-paths.md) | Medium (64.23%) | dynamic-programming, math | [cpp](.cpp/0062.unique-paths.cpp) |
| [0063.Unique Paths II](.doc/0063.unique-paths-ii.md) | Medium (41.49%) | dynamic-programming | [cpp](.cpp/0063.unique-paths-ii.cpp) |
| [0064.Minimum Path Sum](.doc/0064.minimum-path-sum.md) | Medium (63.76%) | dynamic-programming | [cpp](.cpp/0064.minimum-path-sum.cpp) |
| [0065.Valid Number](.doc/0065.valid-number.md) | Hard (19.72%) | string, finite-automata | [cpp](.cpp/0065.valid-number.cpp) |
| [0066.Plus One](.doc/0066.plus-one.md) | Easy (45.16%) | array | [cpp](.cpp/0066.plus-one.cpp) |
| [0067.Add Binary](.doc/0067.add-binary.md) | Easy (53.45%) | string, math | [cpp](.cpp/0067.add-binary.cpp) |
| [0068.Text Justification](.doc/0068.text-justification.md) | Hard (43.18%) | string, greedy | [cpp](.cpp/0068.text-justification.cpp) |
| [0069.Sqrt(x)](.doc/0069.sqrt-x.md) | Easy (38.68%) | math, binary-search | [cpp](.cpp/0069.sqrt-x.cpp) |
| [0070.Climbing Stairs](.doc/0070.climbing-stairs.md) | Easy (52.85%) | dynamic-programming, fibonacci-number | [cpp](.cpp/0070.climbing-stairs.cpp) |
| [0071.Simplify Path](.doc/0071.simplify-path.md) | Medium (42.23%) | string, stack | [cpp](.cpp/0071.simplify-path.cpp) |
| [0072.Edit Distance](.doc/0072.edit-distance.md) | Medium (56.31%) | string, dynamic-programming | [cpp](.cpp/0072.edit-distance.cpp) |
| [0073.Set Matrix Zeroes](.doc/0073.set-matrix-zeroes.md) | Medium (55.42%) | array | [cpp](.cpp/0073.set-matrix-zeroes.cpp) |
| [0074.Search a 2D Matrix](.doc/0074.search-a-2-d-matrix.md) | Medium (50.00%) | matrix, binary-search | [cpp](.cpp/0074.search-a-2-d-matrix.cpp) |
| [0075.Sort Colors](.doc/0075.sort-colors.md) | Medium (62.07%) | array, two-pointers, sort | [cpp](.cpp/0075.sort-colors.cpp) |
| [0076.Minimum Window Substring](.doc/0076.minimum-window-substring.md) | Hard (42.90%) | hash-table, sliding-window, string | [cpp](.cpp/0076.minimum-window-substring.cpp) |
| [0077.Combinations](.doc/0077.combinations.md) | Medium (70.28%) | backtracking, divide-and-conquer, combination | [cpp](.cpp/0077.combinations.cpp) |
| [0078.Subsets](.doc/0078.subsets.md) | Medium (77.35%) | array, backtracking, bit-manipulation, subset | [cpp](.cpp/0078.subsets.cpp) |
| [0079.Word Search](.doc/0079.word-search.md) | Medium (42.66%) | matrix, backtracking, depth-first-search | [cpp](.cpp/0079.word-search.cpp) |
| [0080.Remove Duplicates from Sorted Array II](.doc/0080.remove-duplicates-from-sorted-array-ii.md) | Medium (57.95%) | in-place algorithm, array | [cpp](.cpp/0080.remove-duplicates-from-sorted-array-ii.cpp) |
| [0081.Search in Rotated Sorted Array II](.doc/0081.search-in-rotated-sorted-array-ii.md) | Medium (37.62%) | array, binary-search, search-in-rotated-sorted-array | [cpp](.cpp/0081.search-in-rotated-sorted-array-ii.cpp) |
| [0082.Remove Duplicates from Sorted List II](.doc/0082.remove-duplicates-from-sorted-list-ii.md) | Medium (47.34%) | linked-list | [cpp](.cpp/0082.remove-duplicates-from-sorted-list-ii.cpp) |
| [0083.Remove Duplicates from Sorted List](.doc/0083.remove-duplicates-from-sorted-list.md) | Easy (52.41%) | linked-list, duplicate | [cpp](.cpp/0083.remove-duplicates-from-sorted-list.cpp) |
| [0084.Largest Rectangle in Histogram](.doc/0084.largest-rectangle-in-histogram.md) | Hard (44.23%) | monotonic-stack, array | [cpp](.cpp/0084.largest-rectangle-in-histogram.cpp) |
| [0085.Maximal Rectangle](.doc/0085.maximal-rectangle.md) | Hard (47.03%) | matrix, stack, monotonic-stack | [cpp](.cpp/0085.maximal-rectangle.cpp) |
| [0086.Partition List](.doc/0086.partition-list.md) | Medium (56.17%) | linked-list | [cpp](.cpp/0086.partition-list.cpp) |
| [0087.Scramble String](.doc/0087.scramble-string.md) | Hard (40.03%) | string, dynamic-programming, memoization | [cpp](.cpp/0087.scramble-string.cpp) |
| [0088.Merge Sorted Array](.doc/0088.merge-sorted-array.md) | Easy (49.48%) | array, two-pointers | [cpp](.cpp/0088.merge-sorted-array.cpp) |
| [0089.Gray Code](.doc/0089.gray-code.md) | Medium (59.07%) | hash-table, backtracking, bit-manipulation | [cpp](.cpp/0089.gray-code.cpp) |
| [0090.Subsets II](.doc/0090.subsets-ii.md) | Medium (57.18%) | array, backtracking, bit-manipulation | [cpp](.cpp/0090.subsets-ii.cpp) |
| [0091.Decode Ways](.doc/0091.decode-ways.md) | Medium (34.81%) | string, dynamic-programming | [cpp](.cpp/0091.decode-ways.cpp) |
| [0092.Reverse Linked List II](.doc/0092.reverse-linked-list-ii.md) | Medium (47.62%) | linked-list | [cpp](.cpp/0092.reverse-linked-list-ii.cpp) |
| [0093.Restore IP Addresses](.doc/0093.restore-ip-addresses.md) | Medium (49.73%) | string, backtracking, depth-first-search | [cpp](.cpp/0093.restore-ip-addresses.cpp) |
| [0094.Binary Tree Inorder Traversal](.doc/0094.binary-tree-inorder-traversal.md) | Easy (76.01%) | stack, binary-tree | [cpp](.cpp/0094.binary-tree-inorder-traversal.cpp) |
| [0095.Unique Binary Search Trees II](.doc/0095.unique-binary-search-trees-ii.md) | Medium (57.62%) | recursion, binary-search-tree, binary-tree | [cpp](.cpp/0095.unique-binary-search-trees-ii.cpp) |
| [0096.Unique Binary Search Trees](.doc/0096.unique-binary-search-trees.md) | Medium (60.96%) | dynamic-programming, binary-search-tree, binary-tree, math | [cpp](.cpp/0096.unique-binary-search-trees.cpp) |
| [0097.Interleaving String](.doc/0097.interleaving-string.md) | Medium (39.89%) | string, dynamic-programming, depth-first-search, memoization, hash-table | [cpp](.cpp/0097.interleaving-string.cpp) |
| [0098.Validate Binary Search Tree](.doc/0098.validate-binary-search-tree.md) | Medium (32.87%) | binary-search-tree, binary-tree | [cpp](.cpp/0098.validate-binary-search-tree.cpp) |
| [0099.Recover Binary Search Tree](.doc/0099.recover-binary-search-tree.md) | Medium (53.00%) | binary-search-tree, binary-tree, depth-first-search, sort | [cpp](.cpp/0099.recover-binary-search-tree.cpp) |
| [0100.Same Tree](.doc/0100.same-tree.md) | Easy (61.96%) | binary-tree, depth-first-search, breadth-first-search | [cpp](.cpp/0100.same-tree.cpp) |
| [0101.Symmetric Tree](.doc/0101.symmetric-tree.md) | Easy (56.37%) | binary-tree, depth-first-search, breadth-first-search | [cpp](.cpp/0101.symmetric-tree.cpp) |
| [0102.Binary Tree Level Order Traversal](.doc/0102.binary-tree-level-order-traversal.md) | Medium (67.05%) | binary-tree, breadth-first-search | [cpp](.cpp/0102.binary-tree-level-order-traversal.cpp) |
| [0103.Binary Tree Zigzag Level Order Traversal](.doc/0103.binary-tree-zigzag-level-order-traversal.md) | Medium (58.84%) | binary-tree, breadth-first-search | [cpp](.cpp/0103.binary-tree-zigzag-level-order-traversal.cpp) |
| [0104.Maximum Depth of Binary Tree](.doc/0104.maximum-depth-of-binary-tree.md) | Easy (75.27%) | binary-tree, depth-first-search, breadth-first-search | [cpp](.cpp/0104.maximum-depth-of-binary-tree.cpp) |
| [0105.Construct Binary Tree from Preorder and Inorder Traversal](.doc/0105.construct-binary-tree-from-preorder-and-inorder-traversal.md) | Medium (63.76%) | binary-tree, hash-table | [cpp](.cpp/0105.construct-binary-tree-from-preorder-and-inorder-traversal.cpp) |
| [0106.Construct Binary Tree from Inorder and Postorder Traversal](.doc/0106.construct-binary-tree-from-inorder-and-postorder-traversal.md) | Medium (62.67%) | binary-tree, hash-table | [cpp](.cpp/0106.construct-binary-tree-from-inorder-and-postorder-traversal.cpp) |
| [0107.Binary Tree Level Order Traversal II](.doc/0107.binary-tree-level-order-traversal-ii.md) | Medium (63.28%) | binary-tree, breadth-first-search, depth-first-search | [cpp](.cpp/0107.binary-tree-level-order-traversal-ii.cpp) |
| [0108.Convert Sorted Array to Binary Search Tree](.doc/0108.convert-sorted-array-to-binary-search-tree.md) | Easy (71.58%) | binary-tree, array, depth-first-search | [cpp](.cpp/0108.convert-sorted-array-to-binary-search-tree.cpp) |
| [0109.Convert Sorted List to Binary Search Tree](.doc/0109.convert-sorted-list-to-binary-search-tree.md) | Medium (61.80%) | linked-list, binary-search-tree, fast-slow-pointers | [cpp](.cpp/0109.convert-sorted-list-to-binary-search-tree.cpp) |
| [0110.Balanced Binary Tree](.doc/0110.balanced-binary-tree.md) | Easy (51.90%) | binary-tree, depth-first-search | [cpp](.cpp/0110.balanced-binary-tree.cpp) |
| [0111.Minimum Depth of Binary Tree](.doc/0111.minimum-depth-of-binary-tree.md) | Easy (47.76%) | binary-tree, depth-first-search, breadth-first-search | [cpp](.cpp/0111.minimum-depth-of-binary-tree.cpp) |
| [0112.Path Sum](.doc/0112.path-sum.md) | Easy (50.24%) | binary-tree, path-sum | [cpp](.cpp/0112.path-sum.cpp) |
| [0113.Path Sum II](.doc/0113.path-sum-ii.md) | Medium (58.38%) | binary-tree, path-sum | [cpp](.cpp/0113.path-sum-ii.cpp) |
| [0114.Flatten Binary Tree to Linked List](.doc/0114.flatten-binary-tree-to-linked-list.md) | Medium (64.76%) | binary-tree, depth-first-search, linked-list | [cpp](.cpp/0114.flatten-binary-tree-to-linked-list.cpp) |
| [0115.Distinct Subsequences](.doc/0115.distinct-subsequences.md) | Hard (46.77%) | dynamic-programming, string | [cpp](.cpp/0115.distinct-subsequences.cpp) |
| [0116.Populating Next Right Pointers in Each Node](.doc/0116.populating-next-right-pointers-in-each-node.md) | Medium (62.56%) | binary-tree | [cpp](.cpp/0116.populating-next-right-pointers-in-each-node.cpp) |
| [0117.Populating Next Right Pointers in Each Node II](.doc/0117.populating-next-right-pointers-in-each-node-ii.md) | Medium (52.37%) | binary-tree | [cpp](.cpp/0117.populating-next-right-pointers-in-each-node-ii.cpp) |
| [0118.Pascal's Triangle](.doc/0118.pascals-triangle.md) | Easy (74.11%) | array | [cpp](.cpp/0118.pascals-triangle.cpp) |
| [0119.Pascal's Triangle II](.doc/0119.pascals-triangle-ii.md) | Easy (63.90%) | array, math | [cpp](.cpp/0119.pascals-triangle-ii.cpp) |
| [0120.Triangle](.doc/0120.triangle.md) | Medium (56.45%) | dynamic-programming | [cpp](.cpp/0120.triangle.cpp) |
| [0121.Best Time to Buy and Sell Stock](.doc/0121.best-time-to-buy-and-sell-stock.md) | Easy (53.60%) | array, best-time-to-buy-and-sell-stock | [cpp](.cpp/0121.best-time-to-buy-and-sell-stock.cpp) |
| [0122.Best Time to Buy and Sell Stock II](.doc/0122.best-time-to-buy-and-sell-stock-ii.md) | Medium (66.32%) | array, greedy, best-time-to-buy-and-sell-stock | [cpp](.cpp/0122.best-time-to-buy-and-sell-stock-ii.cpp) |
| [0123.Best Time to Buy and Sell Stock III](.doc/0123.best-time-to-buy-and-sell-stock-iii.md) | Hard (47.84%) | array, greedy, dynamic-programming, best-time-to-buy-and-sell-stock | [cpp](.cpp/0123.best-time-to-buy-and-sell-stock-iii.cpp) |
| [0124.Binary Tree Maximum Path Sum](.doc/0124.binary-tree-maximum-path-sum.md) | Hard (39.99%) | binary-tree, depth-first-search | [cpp](.cpp/0124.binary-tree-maximum-path-sum.cpp) |
| [0125.Valid Palindrome](.doc/0125.valid-palindrome.md) | Easy (47.30%) | string, two-pointers | [cpp](.cpp/0125.valid-palindrome.cpp) |
| [0126.Word Ladder II](.doc/0126.word-ladder-ii.md) | Hard (27.29%) | string, backtracking, breadth-first-search, depth-first-search | [cpp](.cpp/0126.word-ladder-ii.cpp) |
| [0127.Word Ladder](.doc/0127.word-ladder.md) | Hard (39.04%) | breadth-first-search, hash-table | [cpp](.cpp/0127.word-ladder.cpp) |
| [0128.Longest Consecutive Sequence](.doc/0128.longest-consecutive-sequence.md) | Medium (47.29%) | array, hash-table, sort | [cpp](.cpp/0128.longest-consecutive-sequence.cpp) |
| [0129.Sum Root to Leaf Numbers](.doc/0129.sum-root-to-leaf-numbers.md) | Medium (63.68%) | binary-tree, depth-first-search, breadth-first-search | [cpp](.cpp/0129.sum-root-to-leaf-numbers.cpp) |
| [0130.Surrounded Regions](.doc/0130.surrounded-regions.md) | Medium (39.26%) | depth-first-search, breadth-first-search, union-find, matrix | [cpp](.cpp/0130.surrounded-regions.cpp) |
| [0131.Palindrome Partitioning](.doc/0131.palindrome-partitioning.md) | Medium (67.41%) | depth-first-search, backtracking, palindrome | [cpp](.cpp/0131.palindrome-partitioning.cpp) |
| [0132.Palindrome Partitioning II](.doc/0132.palindrome-partitioning-ii.md) | Hard (33.89%) | dynamic-programming, palindrome, string | [cpp](.cpp/0132.palindrome-partitioning-ii.cpp) |
| [0133.Clone Graph](.doc/0133.clone-graph.md) | Medium (57.06%) | hash-table, depth-first-search, breadth-first-search, graph, deep-copy | [cpp](.cpp/0133.clone-graph.cpp) |
| [0134.Gas Station](.doc/0134.gas-station.md) | Medium (45.52%) | greedy, math | [cpp](.cpp/0134.gas-station.cpp) |
| [0135.Candy](.doc/0135.candy.md) | Hard (43.27%) | array, greedy | [cpp](.cpp/0135.candy.cpp) |
| [0136.Single Number](.doc/0136.single-number.md) | Easy (72.74%) | bit-manipulation | [cpp](.cpp/0136.single-number.cpp) |
| [0137.Single Number II](.doc/0137.single-number-ii.md) | Medium (62.51%) | bit-manipulation | [cpp](.cpp/0137.single-number-ii.cpp) |
| [0138.Copy List with Random Pointer](.doc/0138.copy-list-with-random-pointer.md) | Medium (55.92%) | linked-list, hash-table, design, deep-copy | [cpp](.cpp/0138.copy-list-with-random-pointer.cpp) |
| [0139.Word Break](.doc/0139.word-break.md) | Medium (46.72%) | dynamic-programming, hash-table, string | [cpp](.cpp/0139.word-break.cpp) |
| [0140.Word Break II](.doc/0140.word-break-ii.md) | Hard (47.85%) | depth-first-search, memorization | [cpp](.cpp/0140.word-break-ii.cpp) |
| [0141.Linked List Cycle](.doc/0141.linked-list-cycle.md) | Easy (50.31%) | linked-list, two-pointers, hash-table, fast-slow-pointers | [cpp](.cpp/0141.linked-list-cycle.cpp) |
| [0142.Linked List Cycle II](.doc/0142.linked-list-cycle-ii.md) | Medium (51.17%) | linked-list, fast-slow-pointers | [cpp](.cpp/0142.linked-list-cycle-ii.cpp) |
| [0143.Reorder List](.doc/0143.reorder-list.md) | Medium (58.51%) | linked-list, fast-slow-pointers, stack | [cpp](.cpp/0143.reorder-list.cpp) |
| [0144.Binary Tree Preorder Traversal](.doc/0144.binary-tree-preorder-traversal.md) | Easy (69.37%) | binary-tree, stack | [cpp](.cpp/0144.binary-tree-preorder-traversal.cpp) |
| [0145.Binary Tree Postorder Traversal](.doc/0145.binary-tree-postorder-traversal.md) | Easy (70.78%) | binary-tree | [cpp](.cpp/0145.binary-tree-postorder-traversal.cpp) |
| [0146.LRU Cache](.doc/0146.lru-cache.md) | Medium (42.38%) | design | [cpp](.cpp/0146.lru-cache.cpp) |
| [0147.Insertion Sort List](.doc/0147.insertion-sort-list.md) | Medium (53.40%) | sort, linked-list | [cpp](.cpp/0147.insertion-sort-list.cpp) |
| [0148.Sort List](.doc/0148.sort-list.md) | Medium (57.73%) | linked-list, merge-sort | [cpp](.cpp/0148.sort-list.cpp) |
| [0149.Max Points on a Line](.doc/0149.max-points-on-a-line.md) | Hard (26.62%) | hash-table, math, geometry | [cpp](.cpp/0149.max-points-on-a-line.cpp) |
| [0150.Evaluate Reverse Polish Notation](.doc/0150.evaluate-reverse-polish-notation.md) | Medium (51.26%) | stack | [cpp](.cpp/0150.evaluate-reverse-polish-notation.cpp) |
| [0151.Reverse Words in a String](.doc/0151.reverse-words-in-a-string.md) | Medium (41.82%) | string, two-pointers | [cpp](.cpp/0151.reverse-words-in-a-string.cpp) |
| [0152.Maximum Product Subarray](.doc/0152.maximum-product-subarray.md) | Medium (35.03%) | array, dynamic-programming | [cpp](.cpp/0152.maximum-product-subarray.cpp) |
| [0153.Find Minimum in Rotated Sorted Array](.doc/0153.find-minimum-in-rotated-sorted-array.md) | Medium (50.26%) | array, binary-search, search-in-rotated-sorted-array, divide-and-conquer | [cpp](.cpp/0153.find-minimum-in-rotated-sorted-array.cpp) |
| [0154.Find Minimum in Rotated Sorted Array II](.doc/0154.find-minimum-in-rotated-sorted-array-ii.md) | Hard (43.66%) | array, binary-search, search-in-rotated-sorted-array, divide-and-conquer | [cpp](.cpp/0154.find-minimum-in-rotated-sorted-array-ii.cpp) |
| [0155.Min Stack](.doc/0155.min-stack.md) | Medium (54.05%) | stack, design | [cpp](.cpp/0155.min-stack.cpp) |
| 0156.Binary Tree Upside Down 🔒 | Medium (62.71%) | binary-tree | [cpp](.cpp/0156.binary-tree-upside-down.cpp) |
| 0157.Read N Characters Given Read4 🔒 | Easy (41.47%) | string, design | [cpp](.cpp/0157.read-n-characters-given-read4.cpp) |
| 0158.Read N Characters Given read4 II - Call Multiple Times 🔒 | Hard (42.23%) | string, design | [cpp](.cpp/0158.read-n-characters-given-read4-ii---call-multiple-times.cpp) |
| 0159.Longest Substring with At Most Two Distinct Characters 🔒 | Medium (55.30%) | sliding-window, hash-table, string | [cpp](.cpp/0159.longest-substring-with-at-most-two-distinct-characters.cpp) |
| [0160.Intersection of Two Linked Lists](.doc/0160.intersection-of-two-linked-lists.md) | Easy (57.30%) | linked-list, two-pointers | [cpp](.cpp/0160.intersection-of-two-linked-lists.cpp) |
| 0161.One Edit Distance 🔒 | Medium (34.28%) | string | [cpp](.cpp/0161.one-edit-distance.cpp) |
| [0162.Find Peak Element](.doc/0162.find-peak-element.md) | Medium (45.93%) | array, binary-search | [cpp](.cpp/0162.find-peak-element.cpp) |
| 0163.Missing Ranges 🔒 | Easy (33.58%) | array, interval | [cpp](.cpp/0163.missing-ranges.cpp) |
| [0164.Maximum Gap](.doc/0164.maximum-gap.md) | Medium (45.79%) | sort, bucket-sort, array | [cpp](.cpp/0164.maximum-gap.cpp) |
| [0165.Compare Version Numbers](.doc/0165.compare-version-numbers.md) | Medium (36.83%) | string, two-pointers | [cpp](.cpp/0165.compare-version-numbers.cpp) |
| [0166.Fraction to Recurring Decimal](.doc/0166.fraction-to-recurring-decimal.md) | Medium (24.97%) | hash-table, arithmetic | [cpp](.cpp/0166.fraction-to-recurring-decimal.cpp) |
| [0167.Two Sum II - Input Array Is Sorted](.doc/0167.two-sum-ii-input-array-is-sorted.md) | Medium (61.16%) | array, two-pointers, binary-search | [cpp](.cpp/0167.two-sum-ii-input-array-is-sorted.cpp) |
| [0168.Excel Sheet Column Title](.doc/0168.excel-sheet-column-title.md) | Easy (40.54%) | math, string, easy | [cpp](.cpp/0168.excel-sheet-column-title.cpp) |
| [0169.Majority Element](.doc/0169.majority-element.md) | Easy (64.78%) | sort, array, bit-manipulation, boyer-moore-voting-algorithm | [cpp](.cpp/0169.majority-element.cpp) |
| 0170.Two Sum III - Data structure design 🔒 | Easy (38.00%) | design, hash-table, target-sum | [cpp](.cpp/0170.two-sum-iii---data-structure-design.cpp) |
| [0171.Excel Sheet Column Number](.doc/0171.excel-sheet-column-number.md) | Easy (63.66%) | math | [cpp](.cpp/0171.excel-sheet-column-number.cpp) |
| [0172.Factorial Trailing Zeroes](.doc/0172.factorial-trailing-zeroes.md) | Medium (43.28%) | math | [cpp](.cpp/0172.factorial-trailing-zeroes.cpp) |
| [0173.Binary Search Tree Iterator](.doc/0173.binary-search-tree-iterator.md) | Medium (71.88%) | design, stack, binary-tree | [cpp](.cpp/0173.binary-search-tree-iterator.cpp) |
| [0174.Dungeon Game](.doc/0174.dungeon-game.md) | Hard (38.07%) | dynamic-programming, matrix | [cpp](.cpp/0174.dungeon-game.cpp) |
| [0179.Largest Number](.doc/0179.largest-number.md) | Medium (36.04%) | sort, string | [cpp](.cpp/0179.largest-number.cpp) |
| 0186.Reverse Words in a String II 🔒 | Medium (54.52%) | string, two-pointers | [cpp](.cpp/0186.reverse-words-in-a-string-ii.cpp) |
| [0187.Repeated DNA Sequences](.doc/0187.repeated-dna-sequences.md) | Medium (48.78%) | hash-table, bit-manipulation, string | [cpp](.cpp/0187.repeated-dna-sequences.cpp) |
| [0188.Best Time to Buy and Sell Stock IV](.doc/0188.best-time-to-buy-and-sell-stock-iv.md) | Hard (42.57%) | dynamic-programming, best-time-to-buy-and-sell-stock | [cpp](.cpp/0188.best-time-to-buy-and-sell-stock-iv.cpp) |
| [0189.Rotate Array](.doc/0189.rotate-array.md) | Medium (40.50%) | array | [cpp](.cpp/0189.rotate-array.cpp) |
| [0190.Reverse Bits](.doc/0190.reverse-bits.md) | Easy (58.30%) | bit-manipulation | [cpp](.cpp/0190.reverse-bits.cpp) |
| [0191.Number of 1 Bits](.doc/0191.number-of-1-bits.md) | Easy (70.75%) | bit-manipulation | [cpp](.cpp/0191.number-of-1-bits.cpp) |
| [0198.House Robber](.doc/0198.house-robber.md) | Medium (50.95%) | dynamic-programming, array | [cpp](.cpp/0198.house-robber.cpp) |
| [0199.Binary Tree Right Side View](.doc/0199.binary-tree-right-side-view.md) | Medium (62.99%) | binary-tree | [cpp](.cpp/0199.binary-tree-right-side-view.cpp) |
| [0200.Number of Islands](.doc/0200.number-of-islands.md) | Medium (58.75%) | depth-first-search, breadth-first-search | [cpp](.cpp/0200.number-of-islands.cpp) |
| [0201.Bitwise AND of Numbers Range](.doc/0201.bitwise-and-of-numbers-range.md) | Medium (46.86%) | bit-manipulation | [cpp](.cpp/0201.bitwise-and-of-numbers-range.cpp) |
| [0202.Happy Number](.doc/0202.happy-number.md) | Easy (56.02%) | hash-table, math, fast-slow-pointers | [cpp](.cpp/0202.happy-number.cpp) |
| [0203.Remove Linked List Elements](.doc/0203.remove-linked-list-elements.md) | Easy (48.63%) | linked-list | [cpp](.cpp/0203.remove-linked-list-elements.cpp) |
| [0204.Count Primes](.doc/0204.count-primes.md) | Medium (33.56%) | math | [cpp](.cpp/0204.count-primes.cpp) |
| [0205.Isomorphic Strings](.doc/0205.isomorphic-strings.md) | Easy (45.08%) | hash-table | [cpp](.cpp/0205.isomorphic-strings.cpp) |
| [0206.Reverse Linked List](.doc/0206.reverse-linked-list.md) | Easy (76.41%) | linked-list | [cpp](.cpp/0206.reverse-linked-list.cpp) |
| [0207.Course Schedule](.doc/0207.course-schedule.md) | Medium (46.68%) | graph, topological-sort, depth-first-search, breadth-first-search | [cpp](.cpp/0207.course-schedule.cpp) |
| [0208.Implement Trie (Prefix Tree)](.doc/0208.implement-trie-prefix-tree.md) | Medium (64.99%) | design, trie-tree | [cpp](.cpp/0208.implement-trie-prefix-tree.cpp) |
| [0209.Minimum Size Subarray Sum](.doc/0209.minimum-size-subarray-sum.md) | Medium (47.01%) | array, sliding-window, binary-search, prefix-sum | [cpp](.cpp/0209.minimum-size-subarray-sum.cpp) |
| [0210.Course Schedule II](.doc/0210.course-schedule-ii.md) | Medium (50.32%) | graph, topological-sort | [cpp](.cpp/0210.course-schedule-ii.cpp) |
| [0211.Design Add and Search Words Data Structure](.doc/0211.design-add-and-search-words-data-structure.md) | Medium (45.13%) | trie, backtracking, design, depth-first-search | [cpp](.cpp/0211.design-add-and-search-words-data-structure.cpp) |
| [0212.Word Search II](.doc/0212.word-search-ii.md) | Hard (36.26%) | trie, depth-first-search, backtracking, matrix | [cpp](.cpp/0212.word-search-ii.cpp) |
| [0213.House Robber II](.doc/0213.house-robber-ii.md) | Medium (41.92%) | dynamic-programming | [cpp](.cpp/0213.house-robber-ii.cpp) |
| [0214.Shortest Palindrome](.doc/0214.shortest-palindrome.md) | Hard (33.37%) | string, palindrome | [cpp](.cpp/0214.shortest-palindrome.cpp) |
| [0215.Kth Largest Element in an Array](.doc/0215.kth-largest-element-in-an-array.md) | Medium (66.78%) | heap, sort, divide-and-conquer, partition, array | [cpp](.cpp/0215.kth-largest-element-in-an-array.cpp) |
| [0216.Combination Sum III](.doc/0216.combination-sum-iii.md) | Medium (69.54%) | backtracking, combination | [cpp](.cpp/0216.combination-sum-iii.cpp) |
| [0217.Contains Duplicate](.doc/0217.contains-duplicate.md) | Easy (61.59%) | array, sort, hash-table, duplicate | [cpp](.cpp/0217.contains-duplicate.cpp) |
| [0218.The Skyline Problem](.doc/0218.the-skyline-problem.md) | Hard (42.64%) | sort, multiset | [cpp](.cpp/0218.the-skyline-problem.cpp) |
| [0219.Contains Duplicate II](.doc/0219.contains-duplicate-ii.md) | Easy (44.96%) | array, hash-table, duplicate | [cpp](.cpp/0219.contains-duplicate-ii.cpp) |
| [0220.Contains Duplicate III](.doc/0220.contains-duplicate-iii.md) | Hard (22.72%) | sliding-window, ordered-map, binary-search | [cpp](.cpp/0220.contains-duplicate-iii.cpp) |
| [0221.Maximal Square](.doc/0221.maximal-square.md) | Medium (46.44%) | dynamic-programming, matrix, prefix-sum | [cpp](.cpp/0221.maximal-square.cpp) |
| [0222.Count Complete Tree Nodes](.doc/0222.count-complete-tree-nodes.md) | Easy (64.95%) | binary-tree, recursion | [cpp](.cpp/0222.count-complete-tree-nodes.cpp) |
| [0223.Rectangle Area](.doc/0223.rectangle-area.md) | Medium (46.13%) | math, geometry | [cpp](.cpp/0223.rectangle-area.cpp) |
| [0224.Basic Calculator](.doc/0224.basic-calculator.md) | Hard (43.36%) | math, design, arithmetic, basic-calculator | [cpp](.cpp/0224.basic-calculator.cpp) |
| [0225.Implement Stack using Queues](.doc/0225.implement-stack-using-queues.md) | Easy (63.52%) | stack, queue, design | [cpp](.cpp/0225.implement-stack-using-queues.cpp) |
| [0226.Invert Binary Tree](.doc/0226.invert-binary-tree.md) | Easy (76.86%) | binary-tree, recursion | [cpp](.cpp/0226.invert-binary-tree.cpp) |
| [0227.Basic Calculator II](.doc/0227.basic-calculator-ii.md) | Medium (43.53%) | string, basic-calculator, stack, math, arithmetic | [cpp](.cpp/0227.basic-calculator-ii.cpp) |
| [0228.Summary Ranges](.doc/0228.summary-ranges.md) | Easy (50.52%) | array | [cpp](.cpp/0228.summary-ranges.cpp) |
| [0229.Majority Element II](.doc/0229.majority-element-ii.md) | Medium (51.36%) | array, boyer-moore-voting-algorithm | [cpp](.cpp/0229.majority-element-ii.cpp) |
| [0230.Kth Smallest Element in a BST](.doc/0230.kth-smallest-element-in-a-bst.md) | Medium (72.39%) | binary-tree, binary-search-tree, divide-and-conquer | [cpp](.cpp/0230.kth-smallest-element-in-a-bst.cpp) |
| [0231.Power of Two](.doc/0231.power-of-two.md) | Easy (47.74%) | bit-manipulation | [cpp](.cpp/0231.power-of-two.cpp) |
| [0232.Implement Queue using Stacks](.doc/0232.implement-queue-using-stacks.md) | Easy (66.16%) | stack, queue, design | [cpp](.cpp/0232.implement-queue-using-stacks.cpp) |
| [0233.Number of Digit One](.doc/0233.number-of-digit-one.md) | Hard (34.56%) | math, digit | [cpp](.cpp/0233.number-of-digit-one.cpp) |
| [0234.Palindrome Linked List](.doc/0234.palindrome-linked-list.md) | Easy (53.06%) | linked-list, fast-slow-pointers, stack, recursion | [cpp](.cpp/0234.palindrome-linked-list.cpp) |
| [0235.Lowest Common Ancestor of a Binary Search Tree](.doc/0235.lowest-common-ancestor-of-a-binary-search-tree.md) | Medium (64.58%) | binary-search-tree | [cpp](.cpp/0235.lowest-common-ancestor-of-a-binary-search-tree.cpp) |
| [0236.Lowest Common Ancestor of a Binary Tree](.doc/0236.lowest-common-ancestor-of-a-binary-tree.md) | Medium (62.02%) | binary-tree | [cpp](.cpp/0236.lowest-common-ancestor-of-a-binary-tree.cpp) |
| [0237.Delete Node in a Linked List](.doc/0237.delete-node-in-a-linked-list.md) | Medium (78.35%) | linked-list | [cpp](.cpp/0237.delete-node-in-a-linked-list.cpp) |
| [0238.Product of Array Except Self](.doc/0238.product-of-array-except-self.md) | Medium (66.09%) | array | [cpp](.cpp/0238.product-of-array-except-self.cpp) |
| [0239.Sliding Window Maximum](.doc/0239.sliding-window-maximum.md) | Hard (46.55%) | heap, sliding-window, monotonic-stack, deque, multiset | [cpp](.cpp/0239.sliding-window-maximum.cpp) |
| [0240.Search a 2D Matrix II](.doc/0240.search-a-2-d-matrix-ii.md) | Medium (52.54%) | binary-search, matrix | [cpp](.cpp/0240.search-a-2-d-matrix-ii.cpp) |
| [0241.Different Ways to Add Parentheses](.doc/0241.different-ways-to-add-parentheses.md) | Medium (65.35%) | divide-and-conquer, memoization | [cpp](.cpp/0241.different-ways-to-add-parentheses.cpp) |
| [0242.Valid Anagram](.doc/0242.valid-anagram.md) | Easy (64.43%) | hash-table | [cpp](.cpp/0242.valid-anagram.cpp) |
| 0243.Shortest Word Distance 🔒 | Easy (65.30%) | string, two-pointers | [cpp](.cpp/0243.shortest-word-distance.cpp) |
| 0244.Shortest Word Distance II 🔒 | Medium (61.16%) | design, hash-table, two-pointers | [cpp](.cpp/0244.shortest-word-distance-ii.cpp) |
| 0245.Shortest Word Distance III 🔒 | Medium (58.42%) | string, two-pointers | [cpp](.cpp/0245.shortest-word-distance-iii.cpp) |
| 0246.Strobogrammatic Number 🔒 | Easy (47.68%) | two-pointers | [cpp](.cpp/0246.strobogrammatic-number.cpp) |
| 0247.Strobogrammatic Number II 🔒 | Medium (52.23%) | recursion, string | [cpp](.cpp/0247.strobogrammatic-number-ii.cpp) |
| 0248.Strobogrammatic Number III 🔒 | Hard (42.11%) | string, recursion | [cpp](.cpp/0248.strobogrammatic-number-iii.cpp) |
| 0249.Group Shifted Strings 🔒 | Medium (65.51%) | hash-table, string | [cpp](.cpp/0249.group-shifted-strings.cpp) |
| 0250.Count Univalue Subtrees 🔒 | Medium (56.38%) | binary-tree, depth-first-search | [cpp](.cpp/0250.count-univalue-subtrees.cpp) |
| 0251.Flatten 2D Vector 🔒 | Medium (49.45%) | design, two-pointers | [cpp](.cpp/0251.flatten-2d-vector.cpp) |
| 0252.Meeting Rooms 🔒 | Easy (58.02%) | sort, interval | [cpp](.cpp/0252.meeting-rooms.cpp) |
| 0253.Meeting Rooms II 🔒 | Medium (51.22%) | array, difference-array, interval | [cpp](.cpp/0253.meeting-rooms-ii.cpp) |
| 0254.Factor Combinations 🔒 | Medium (49.47%) | backtracking, math | [cpp](.cpp/0254.factor-combinations.cpp) |
| 0255.Verify Preorder Sequence in Binary Search Tree 🔒 | Medium (49.51%) | monotonic-stack, binary-search-tree, binary-tree | [cpp](.cpp/0255.verify-preorder-sequence-in-binary-search-tree.cpp) |
| 0256.Paint House 🔒 | Medium (62.41%) | dynamic-programming | [cpp](.cpp/0256.paint-house.cpp) |
| [0257.Binary Tree Paths](.doc/0257.binary-tree-paths.md) | Easy (63.51%) | binary-tree, depth-first-search | [cpp](.cpp/0257.binary-tree-paths.cpp) |
| [0258.Add Digits](.doc/0258.add-digits.md) | Easy (66.53%) | math | [cpp](.cpp/0258.add-digits.cpp) |
| 0259.3Sum Smaller 🔒 | Medium (50.71%) | array, two-pointers, sort | [cpp](.cpp/0259.3sum-smaller.cpp) |
| [0260.Single Number III](.doc/0260.single-number-iii.md) | Medium (68.35%) | bit-manipulation | [cpp](.cpp/0260.single-number-iii.cpp) |
| 0261.Graph Valid Tree 🔒 | Medium (48.03%) | tree, graph, union-find | [cpp](.cpp/0261.graph-valid-tree.cpp) |
| [0263.Ugly Number](.doc/0263.ugly-number.md) | Easy (41.95%) | easy | [cpp](.cpp/0263.ugly-number.cpp) |
| [0264.Ugly Number II](.doc/0264.ugly-number-ii.md) | Medium (46.18%) | heap, math, dynamic-programming | [cpp](.cpp/0264.ugly-number-ii.cpp) |
| 0265.Paint House II 🔒 | Hard (54.60%) | dynamic-programming | [cpp](.cpp/0265.paint-house-ii.cpp) |
| 0266.Palindrome Permutation 🔒 | Easy (67.15%) | string, hash-table, palindrome, permutation | [cpp](.cpp/0266.palindrome-permutation.cpp) |
| 0267.Palindrome Permutation II 🔒 | Medium (41.32%) | string, permutation, palindrome, backtracking, hash-table | [cpp](.cpp/0267.palindrome-permutation-ii.cpp) |
| [0268.Missing Number](.doc/0268.missing-number.md) | Easy (66.68%) | math, array, bit-manipulation, binary-search | [cpp](.cpp/0268.missing-number.cpp) |
| 0269.Alien Dictionary 🔒 | Hard (35.72%) | graph, topological-sort, string | [cpp](.cpp/0269.alien-dictionary.cpp) |
| 0270.Closest Binary Search Tree Value 🔒 | Easy (51.80%) | binary-search-tree, binary-tree, recursion | [cpp](.cpp/0270.closest-binary-search-tree-value.cpp) |
| 0271.Encode and Decode Strings 🔒 | Medium (46.31%) | string, design | [cpp](.cpp/0271.encode-and-decode-strings.cpp) |
| 0272.Closest Binary Search Tree Value II 🔒 | Hard (59.01%) | stack, queue, binary-search-tree, binary-tree | [cpp](.cpp/0272.closest-binary-search-tree-value-ii.cpp) |
| [0273.Integer to English Words](.doc/0273.integer-to-english-words.md) | Hard (30.56%) | math, string, hash-table | [cpp](.cpp/0273.integer-to-english-words.cpp) |
| [0274.H-Index](.doc/0274.h-index.md) | Medium (38.89%) | sort, array, hash-table | [cpp](.cpp/0274.h-index.cpp) |
| [0275.H-Index II](.doc/0275.h-index-ii.md) | Medium (38.09%) | binary-search | [cpp](.cpp/0275.h-index-ii.cpp) |
| 0276.Paint Fence 🔒 | Medium (46.53%) | dynamic-programming | [cpp](.cpp/0276.paint-fence.cpp) |
| 0277.Find the Celebrity 🔒 | Medium (47.14%) | array, graph | [cpp](.cpp/0277.find-the-celebrity.cpp) |
| [0278.First Bad Version](.doc/0278.first-bad-version.md) | Easy (44.33%) | binary-search | [cpp](.cpp/0278.first-bad-version.cpp) |
| [0279.Perfect Squares](.doc/0279.perfect-squares.md) | Medium (54.75%) | math, dynamic-programming | [cpp](.cpp/0279.perfect-squares.cpp) |
| 0280.Wiggle Sort 🔒 | Medium (67.64%) | sort, array | [cpp](.cpp/0280.wiggle-sort.cpp) |
| 0281.Zigzag Iterator 🔒 | Medium (63.78%) | design | [cpp](.cpp/0281.zigzag-iterator.cpp) |
| [0282.Expression Add Operators](.doc/0282.expression-add-operators.md) | Hard (39.82%) | recursion, string | [cpp](.cpp/0282.expression-add-operators.cpp) |
| [0283.Move Zeroes](.doc/0283.move-zeroes.md) | Easy (61.71%) | array, two-pointers, in-place-algorithm | [cpp](.cpp/0283.move-zeroes.cpp) |
| [0284.Peeking Iterator](.doc/0284.peeking-iterator.md) | Medium (59.44%) | design | [cpp](.cpp/0284.peeking-iterator.cpp) |
| 0285.Inorder Successor in BST 🔒 | Medium (49.63%) | binary-search-tree, binary-tree, stack, recursion | [cpp](.cpp/0285.inorder-successor-in-bst.cpp) |
| 0286.Walls and Gates 🔒 | Medium (61.31%) | breadth-first-search | [cpp](.cpp/0286.walls-and-gates.cpp) |
| [0287.Find the Duplicate Number](.doc/0287.find-the-duplicate-number.md) | Medium (60.69%) | array, duplicate, binary-search, bit-manipulation, fast-slow-pointers | [cpp](.cpp/0287.find-the-duplicate-number.cpp) |
| 0288.Unique Word Abbreviation 🔒 | Medium (26.22%) | hash-table, string | [cpp](.cpp/0288.unique-word-abbreviation.cpp) |
| [0289.Game of Life](.doc/0289.game-of-life.md) | Medium (69.02%) | matrix, bit-manipulation, in-place-algorithm | [cpp](.cpp/0289.game-of-life.cpp) |
| [0290.Word Pattern](.doc/0290.word-pattern.md) | Easy (42.00%) | hash-table, string | [cpp](.cpp/0290.word-pattern.cpp) |
| 0291.Word Pattern II 🔒 | Medium (47.58%) | backtracking, string, hash-table | [cpp](.cpp/0291.word-pattern-ii.cpp) |
| [0292.Nim Game](.doc/0292.nim-game.md) | Easy (56.81%) | math, game-theory | [cpp](.cpp/0292.nim-game.cpp) |
| 0293.Flip Game 🔒 | Easy (64.56%) | string | [cpp](.cpp/0293.flip-game.cpp) |
| 0294.Flip Game II 🔒 | Medium (52.12%) | game, backtracking | [cpp](.cpp/0294.flip-game-ii.cpp) |
| [0295.Find Median from Data Stream](.doc/0295.find-median-from-data-stream.md) | Hard (51.86%) | design, heap | [cpp](.cpp/0295.find-median-from-data-stream.cpp) |
| 0296.Best Meeting Point 🔒 | Hard (60.90%) | math, sort | [cpp](.cpp/0296.best-meeting-point.cpp) |
| [0297.Serialize and Deserialize Binary Tree](.doc/0297.serialize-and-deserialize-binary-tree.md) | Hard (56.66%) | binary-tree, design, serialization | [cpp](.cpp/0297.serialize-and-deserialize-binary-tree.cpp) |
| 0298.Binary Tree Longest Consecutive Sequence 🔒 | Medium (53.46%) | binary-tree, depth-first-search | [cpp](.cpp/0298.binary-tree-longest-consecutive-sequence.cpp) |
| [0299.Bulls and Cows](.doc/0299.bulls-and-cows.md) | Medium (50.24%) | hash-table | [cpp](.cpp/0299.bulls-and-cows.cpp) |
| [0300.Longest Increasing Subsequence](.doc/0300.longest-increasing-subsequence.md) | Medium (55.23%) | array, dynamic-programming, greedy, binary-search | [cpp](.cpp/0300.longest-increasing-subsequence.cpp) |
| [0301.Remove Invalid Parentheses](.doc/0301.remove-invalid-parentheses.md) | Hard (48.14%) | breadth-first-search, hash-table, parentheses, TODO | [cpp](.cpp/0301.remove-invalid-parentheses.cpp) |
| 0302.Smallest Rectangle Enclosing Black Pixels 🔒 | Hard (58.87%) | binary-search, matrix, geometry | [cpp](.cpp/0302.smallest-rectangle-enclosing-black-pixels.cpp) |
| [0303.Range Sum Query - Immutable](.doc/0303.range-sum-query-immutable.md) | Easy (63.17%) | prefix-sum, math, array, interval | [cpp](.cpp/0303.range-sum-query-immutable.cpp) |
| [0304.Range Sum Query 2D - Immutable](.doc/0304.range-sum-query-2-d-immutable.md) | Medium (54.46%) | prefix-sum, math, matrix, interval | [cpp](.cpp/0304.range-sum-query-2-d-immutable.cpp) |
| 0305.Number of Islands II 🔒 | Hard (39.59%) | union-find | [cpp](.cpp/0305.number-of-islands-ii.cpp) |
| [0306.Additive Number](.doc/0306.additive-number.md) | Medium (31.53%) | backtracking, string | [cpp](.cpp/0306.additive-number.cpp) |
| [0307.Range Sum Query - Mutable](.doc/0307.range-sum-query-mutable.md) | Medium (40.93%) | array, interval, binary-indexed-tree | [cpp](.cpp/0307.range-sum-query-mutable.cpp) |
| 0308.Range Sum Query 2D - Mutable 🔒 | Hard (44.01%) | matrix, interval, binary-indexed-tree | |
| [0309.Best Time to Buy and Sell Stock with Cooldown](.doc/0309.best-time-to-buy-and-sell-stock-with-cooldown.md) | Medium (58.03%) | dynamic-programming, best-time-to-buy-and-sell-stock | [cpp](.cpp/0309.best-time-to-buy-and-sell-stock-with-cooldown.cpp) |
| [0310.Minimum Height Trees](.doc/0310.minimum-height-trees.md) | Medium (38.88%) | tree, graph, topological-sort | [cpp](.cpp/0310.minimum-height-trees.cpp) |
| 0311.Sparse Matrix Multiplication 🔒 | Medium (68.06%) | math, matrix | [cpp](.cpp/0311.sparse-matrix-multiplication.cpp) |
| [0312.Burst Balloons](.doc/0312.burst-balloons.md) | Hard (58.68%) | dynamic-programming | [cpp](.cpp/0312.burst-balloons.cpp) |
| [0313.Super Ugly Number](.doc/0313.super-ugly-number.md) | Medium (45.25%) | heap, math, dynamic-programming | [cpp](.cpp/0313.super-ugly-number.cpp) |
| 0314.Binary Tree Vertical Order Traversal 🔒 | Medium (54.18%) | binary-tree, breadth-first-search, depth-first-search | [cpp](.cpp/0314.binary-tree-vertical-order-traversal.cpp) |
| [0315.Count of Smaller Numbers After Self](.doc/0315.count-of-smaller-numbers-after-self.md) | Hard (42.41%) | sort, binary-indexed-tree, interval, merge-sort, hash-table, segment-tree | [cpp](.cpp/0315.count-of-smaller-numbers-after-self.cpp) |
| [0316.Remove Duplicate Letters](.doc/0316.remove-duplicate-letters.md) | Medium (49.58%) | stack, greedy, hash-table, string | [cpp](.cpp/0316.remove-duplicate-letters.cpp) |
| 0317.Shortest Distance from All Buildings 🔒 | Hard (43.13%) | breadth-first-search | [cpp](.cpp/0317.shortest-distance-from-all-buildings.cpp) |
| [0318.Maximum Product of Word Lengths](.doc/0318.maximum-product-of-word-lengths.md) | Medium (59.93%) | bit-manipulation | [cpp](.cpp/0318.maximum-product-of-word-lengths.cpp) |
| [0319.Bulb Switcher](.doc/0319.bulb-switcher.md) | Medium (52.72%) | math, brainteaser | [cpp](.cpp/0319.bulb-switcher.cpp) |
| 0320.Generalized Abbreviation 🔒 | Medium (58.36%) | string, depth-first-search | [cpp](.cpp/0320.generalized-abbreviation.cpp) |
| [0321.Create Maximum Number](.doc/0321.create-maximum-number.md) | Hard (30.01%) | greedy | [cpp](.cpp/0321.create-maximum-number.cpp) |
| [0322.Coin Change](.doc/0322.coin-change.md) | Medium (43.81%) | dynamic-programming, memoization, depth-first-search, coin-change | [cpp](.cpp/0322.coin-change.cpp) |
| 0323.Number of Connected Components in an Undirected Graph 🔒 | Medium (62.76%) | graph, depth-first-search, union-find | [cpp](.cpp/0323.number-of-connected-components-in-an-undirected-graph.cpp) |
| [0324.Wiggle Sort II](.doc/0324.wiggle-sort-ii.md) | Medium (34.28%) | sort, array, two-pointers, partition | [cpp](.cpp/0324.wiggle-sort-ii.cpp) |
| 0325.Maximum Size Subarray Sum Equals k 🔒 | Medium (49.48%) | hash-table, prefix-sum | [cpp](.cpp/0325.maximum-size-subarray-sum-equals-k.cpp) |
| [0326.Power of Three](.doc/0326.power-of-three.md) | Easy (46.50%) | math | [cpp](.cpp/0326.power-of-three.cpp) |
| [0327.Count of Range Sum](.doc/0327.count-of-range-sum.md) | Hard (35.90%) | array, interval, merge-sort, binary-indexed-tree, segment-tree, hash-table | [cpp](.cpp/0327.count-of-range-sum.cpp) |
| [0328.Odd Even Linked List](.doc/0328.odd-even-linked-list.md) | Medium (61.39%) | linked-list | [cpp](.cpp/0328.odd-even-linked-list.cpp) |
| [0329.Longest Increasing Path in a Matrix](.doc/0329.longest-increasing-path-in-a-matrix.md) | Hard (53.53%) | depth-first-search, breadth-first-search, memoization | [cpp](.cpp/0329.longest-increasing-path-in-a-matrix.cpp) |
| [0330.Patching Array](.doc/0330.patching-array.md) | Hard (41.72%) | greedy | [cpp](.cpp/0330.patching-array.cpp) |
| [0331.Verify Preorder Serialization of a Binary Tree](.doc/0331.verify-preorder-serialization-of-a-binary-tree.md) | Medium (45.18%) | stack | [cpp](.cpp/0331.verify-preorder-serialization-of-a-binary-tree.cpp) |
| [0332.Reconstruct Itinerary](.doc/0332.reconstruct-itinerary.md) | Hard (43.24%) | graph, depth-first-search, sort, stack | [cpp](.cpp/0332.reconstruct-itinerary.cpp) |
| 0333.Largest BST Subtree 🔒 | Medium (43.73%) | binary-tree, depth-first-search | [cpp](.cpp/0333.largest-bst-subtree.cpp) |
| [0334.Increasing Triplet Subsequence](.doc/0334.increasing-triplet-subsequence.md) | Medium (40.00%) | array | [cpp](.cpp/0334.increasing-triplet-subsequence.cpp) |
| [0335.Self Crossing](.doc/0335.self-crossing.md) | Hard (30.43%) | math, geometry | [cpp](.cpp/0335.self-crossing.cpp) |
| [0336.Palindrome Pairs](.doc/0336.palindrome-pairs.md) | Hard (35.27%) | hash-table, string, ordered-set | [cpp](.cpp/0336.palindrome-pairs.cpp) |
| [0337.House Robber III](.doc/0337.house-robber-iii.md) | Medium (54.23%) | binary-tree, depth-first-search | [cpp](.cpp/0337.house-robber-iii.cpp) |
| [0338.Counting Bits](.doc/0338.counting-bits.md) | Easy (78.20%) | bit-manipulation, dynamic-programming | [cpp](.cpp/0338.counting-bits.cpp) |
| 0339.Nested List Weight Sum 🔒 | Medium (83.47%) | depth-first-search, breadth-first-search | [cpp](.cpp/0339.nested-list-weight-sum.cpp) |
| 0340.Longest Substring with At Most K Distinct Characters 🔒 | Medium (48.78%) | string, hash-table, sliding-window | [cpp](.cpp/0340.longest-substring-with-at-most-k-distinct-characters.cpp) |
| [0341.Flatten Nested List Iterator](.doc/0341.flatten-nested-list-iterator.md) | Medium (64.43%) | design, stack, queue, depth-first-search | [cpp](.cpp/0341.flatten-nested-list-iterator.cpp) |
| [0342.Power of Four](.doc/0342.power-of-four.md) | Easy (47.94%) | bit-manipulation, math | [cpp](.cpp/0342.power-of-four.cpp) |
| [0343.Integer Break](.doc/0343.integer-break.md) | Medium (60.29%) | math | [cpp](.cpp/0343.integer-break.cpp) |
| [0344.Reverse String](.doc/0344.reverse-string.md) | Easy (77.76%) | two-pointers, string | [cpp](.cpp/0344.reverse-string.cpp) |
| [0345.Reverse Vowels of a String](.doc/0345.reverse-vowels-of-a-string.md) | Easy (52.91%) | two-pointers, string | [cpp](.cpp/0345.reverse-vowels-of-a-string.cpp) |
| 0346.Moving Average from Data Stream 🔒 | Easy (78.24%) | queue, design | [cpp](.cpp/0346.moving-average-from-data-stream.cpp) |
| [0347.Top K Frequent Elements](.doc/0347.top-k-frequent-elements.md) | Medium (62.74%) | hash-table, heap | [cpp](.cpp/0347.top-k-frequent-elements.cpp) |
| 0348.Design Tic-Tac-Toe 🔒 | Medium (57.93%) | design, hash-table | [cpp](.cpp/0348.design-tic-tac-toe.cpp) |
| [0349.Intersection of Two Arrays](.doc/0349.intersection-of-two-arrays.md) | Easy (74.39%) | hash-table, two-pointers, binary-search, sort, set | [cpp](.cpp/0349.intersection-of-two-arrays.cpp) |
| [0350.Intersection of Two Arrays II](.doc/0350.intersection-of-two-arrays-ii.md) | Easy (56.45%) | hash-table, sort, two-pointers | [cpp](.cpp/0350.intersection-of-two-arrays-ii.cpp) |
| 0351.Android Unlock Patterns 🔒 | Medium (51.81%) | depth-first-search | [cpp](.cpp/0351.android-unlock-patterns.cpp) |
| [0352.Data Stream as Disjoint Intervals](.doc/0352.data-stream-as-disjoint-intervals.md) | Hard (59.98%) | interval, ordered-map | [cpp](.cpp/0352.data-stream-as-disjoint-intervals.cpp) |
| 0353.Design Snake Game 🔒 | Medium (38.73%) | design, queue, hash-table | [cpp](.cpp/0353.design-snake-game.cpp) |
| [0354.Russian Doll Envelopes](.doc/0354.russian-doll-envelopes.md) | Hard (37.11%) | binary-search, sort, greedy | [cpp](.cpp/0354.russian-doll-envelopes.cpp) |
| [0355.Design Twitter](.doc/0355.design-twitter.md) | Medium (39.32%) | design, hash-table, heap | [cpp](.cpp/0355.design-twitter.cpp) |
| 0356.Line Reflection 🔒 | Medium (35.44%) | hash-table, geometry | [cpp](.cpp/0356.line-reflection.cpp) |
| [0357.Count Numbers with Unique Digits](.doc/0357.count-numbers-with-unique-digits.md) | Medium (52.86%) | math, backtracking | [cpp](.cpp/0357.count-numbers-with-unique-digits.cpp) |
| 0358.Rearrange String k Distance Apart 🔒 | Hard (38.62%) | heap, greedy, hash-table | [cpp](.cpp/0358.rearrange-string-k-distance-apart.cpp) |
| 0359.Logger Rate Limiter 🔒 | Easy (75.84%) | design, hash-table | [cpp](.cpp/0359.logger-rate-limiter.cpp) |
| 0360.Sort Transformed Array 🔒 | Medium (55.69%) | math, two-pointers | [cpp](.cpp/0360.sort-transformed-array.cpp) |
| 0361.Bomb Enemy 🔒 | Medium (51.72%) | matrix | [cpp](.cpp/0361.bomb-enemy.cpp) |
| 0362.Design Hit Counter 🔒 | Medium (68.64%) | design, binary-search | [cpp](.cpp/0362.design-hit-counter.cpp) |
| [0363.Max Sum of Rectangle No Larger Than K](.doc/0363.max-sum-of-rectangle-no-larger-than-k.md) | Hard (44.11%) | binary-search, matrix, prefix-sum, ordered-set | [cpp](.cpp/0363.max-sum-of-rectangle-no-larger-than-k.cpp) |
| 0364.Nested List Weight Sum II 🔒 | Medium (65.28%) | depth-first-search | [cpp](.cpp/0364.nested-list-weight-sum-ii.cpp) |
| [0365.Water and Jug Problem](.doc/0365.water-and-jug-problem.md) | Medium (40.21%) | math | [cpp](.cpp/0365.water-and-jug-problem.cpp) |
| 0366.Find Leaves of Binary Tree 🔒 | Medium (80.54%) | binary-tree, depth-first-search | [cpp](.cpp/0366.find-leaves-of-binary-tree.cpp) |
| [0367.Valid Perfect Square](.doc/0367.valid-perfect-square.md) | Easy (43.61%) | math, binary-search | [cpp](.cpp/0367.valid-perfect-square.cpp) |
| [0368.Largest Divisible Subset](.doc/0368.largest-divisible-subset.md) | Medium (45.24%) | math, dynamic-programming | [cpp](.cpp/0368.largest-divisible-subset.cpp) |
| 0369.Plus One Linked List 🔒 | Medium (61.02%) | linked-list, recursion | [cpp](.cpp/0369.plus-one-linked-list.cpp) |
| 0370.Range Addition 🔒 | Medium (71.55%) | difference-array | [cpp](.cpp/0370.range-addition.cpp) |
| [0371.Sum of Two Integers](.doc/0371.sum-of-two-integers.md) | Medium (51.78%) | bit-manipulation, arithmetic | [cpp](.cpp/0371.sum-of-two-integers.cpp) |
| [0372.Super Pow](.doc/0372.super-pow.md) | Medium (35.20%) | math | [cpp](.cpp/0372.super-pow.cpp) |
| [0373.Find K Pairs with Smallest Sums](.doc/0373.find-k-pairs-with-smallest-sums.md) | Medium (39.98%) | heap, sort, array | [cpp](.cpp/0373.find-k-pairs-with-smallest-sums.cpp) |
| [0374.Guess Number Higher or Lower](.doc/0374.guess-number-higher-or-lower.md) | Easy (53.39%) | binary-search | [cpp](.cpp/0374.guess-number-higher-or-lower.cpp) |
| [0375.Guess Number Higher or Lower II](.doc/0375.guess-number-higher-or-lower-ii.md) | Medium (48.83%) | dynamic-programming | [cpp](.cpp/0375.guess-number-higher-or-lower-ii.cpp) |
| [0376.Wiggle Subsequence](.doc/0376.wiggle-subsequence.md) | Medium (48.45%) | dynamic-programming, greedy | [cpp](.cpp/0376.wiggle-subsequence.cpp) |
| [0377.Combination Sum IV](.doc/0377.combination-sum-iv.md) | Medium (54.13%) | dynamic-programming, array, combination | [cpp](.cpp/0377.combination-sum-iv.cpp) |
| [0378.Kth Smallest Element in a Sorted Matrix](.doc/0378.kth-smallest-element-in-a-sorted-matrix.md) | Medium (62.38%) | binary-search, matrix | [cpp](.cpp/0378.kth-smallest-element-in-a-sorted-matrix.cpp) |
| 0379.Design Phone Directory 🔒 | Medium (51.65%) | design, hash-table | [cpp](.cpp/0379.design-phone-directory.cpp) |
| [0380.Insert Delete GetRandom O(1)](.doc/0380.insert-delete-get-random-o-1.md) | Medium (54.41%) | array, hash-table, design, random | [cpp](.cpp/0380.insert-delete-get-random-o-1.cpp) |
| [0381.Insert Delete GetRandom O(1) - Duplicates allowed](.doc/0381.insert-delete-get-random-o-1-duplicates-allowed.md) | Hard (35.44%) | array, hash-table, design, random | [cpp](.cpp/0381.insert-delete-get-random-o-1-duplicates-allowed.cpp) |
| [0382.Linked List Random Node](.doc/0382.linked-list-random-node.md) | Medium (63.13%) | random, reservoir-sampling | [cpp](.cpp/0382.linked-list-random-node.cpp) |
| [0383.Ransom Note](.doc/0383.ransom-note.md) | Easy (61.20%) | hash-table, string, easy | [cpp](.cpp/0383.ransom-note.cpp) |
| [0384.Shuffle an Array](.doc/0384.shuffle-an-array.md) | Medium (58.28%) | random | [cpp](.cpp/0384.shuffle-an-array.cpp) |
| [0385.Mini Parser](.doc/0385.mini-parser.md) | Medium (38.03%) | string, stack, recursion | [cpp](.cpp/0385.mini-parser.cpp) |
| [0386.Lexicographical Numbers](.doc/0386.lexicographical-numbers.md) | Medium (63.77%) | math, string, depth-first-search | [cpp](.cpp/0386.lexicographical-numbers.cpp) |
| [0387.First Unique Character in a String](.doc/0387.first-unique-character-in-a-string.md) | Easy (62.09%) | hash-table | [cpp](.cpp/0387.first-unique-character-in-a-string.cpp) |
| [0388.Longest Absolute File Path](.doc/0388.longest-absolute-file-path.md) | Medium (47.24%) | stack, hash-table | [cpp](.cpp/0388.longest-absolute-file-path.cpp) |
| [0389.Find the Difference](.doc/0389.find-the-difference.md) | Easy (59.77%) | hash-table | [cpp](.cpp/0389.find-the-difference.cpp) |
| [0390.Elimination Game](.doc/0390.elimination-game.md) | Medium (45.70%) | math | [cpp](.cpp/0390.elimination-game.cpp) |
| [0391.Perfect Rectangle](.doc/0391.perfect-rectangle.md) | Hard (33.63%) | hash-table, geometry, hard | [cpp](.cpp/0391.perfect-rectangle.cpp) |
| [0392.Is Subsequence](.doc/0392.is-subsequence.md) | Easy (47.93%) | string, two-pointers | [cpp](.cpp/0392.is-subsequence.cpp) |
| [0393.UTF-8 Validation](.doc/0393.utf-8-validation.md) | Medium (45.11%) | bit-manipulation | [cpp](.cpp/0393.utf-8-validation.cpp) |
| [0394.Decode String](.doc/0394.decode-string.md) | Medium (59.08%) | stack, string | [cpp](.cpp/0394.decode-string.cpp) |
| [0395.Longest Substring with At Least K Repeating Characters](.doc/0395.longest-substring-with-at-least-k-repeating-characters.md) | Medium (44.96%) | string, sliding-window, hash-table | [cpp](.cpp/0395.longest-substring-with-at-least-k-repeating-characters.cpp) |
| [0396.Rotate Function](.doc/0396.rotate-function.md) | Medium (42.45%) | math | [cpp](.cpp/0396.rotate-function.cpp) |
| [0397.Integer Replacement](.doc/0397.integer-replacement.md) | Medium (35.70%) | bit-manipulation, math, recursion | [cpp](.cpp/0397.integer-replacement.cpp) |
| [0398.Random Pick Index](.doc/0398.random-pick-index.md) | Medium (63.18%) | random, hash-table, reservoir-sampling | [cpp](.cpp/0398.random-pick-index.cpp) |
| [0399.Evaluate Division](.doc/0399.evaluate-division.md) | Medium (61.62%) | union-find, graph, depth-first-search | [cpp](.cpp/0399.evaluate-division.cpp) |
| [0400.Nth Digit](.doc/0400.nth-digit.md) | Medium (34.75%) | math | [cpp](.cpp/0400.nth-digit.cpp) |
| [0401.Binary Watch](.doc/0401.binary-watch.md) | Easy (54.15%) | bit-manipulation | [cpp](.cpp/0401.binary-watch.cpp) |
| [0402.Remove K Digits](.doc/0402.remove-k-digits.md) | Medium (31.73%) | stack, greedy | [cpp](.cpp/0402.remove-k-digits.cpp) |
| [0403.Frog Jump](.doc/0403.frog-jump.md) | Hard (46.01%) | binary-search, hash-table, depth-first-search, memoization | [cpp](.cpp/0403.frog-jump.cpp) |
| [0404.Sum of Left Leaves](.doc/0404.sum-of-left-leaves.md) | Easy (57.80%) | binary-tree | [cpp](.cpp/0404.sum-of-left-leaves.cpp) |
| [0405.Convert a Number to Hexadecimal](.doc/0405.convert-a-number-to-hexadecimal.md) | Easy (48.31%) | bit-manipulation | [cpp](.cpp/0405.convert-a-number-to-hexadecimal.cpp) |
| [0406.Queue Reconstruction by Height](.doc/0406.queue-reconstruction-by-height.md) | Medium (73.40%) | sort | [cpp](.cpp/0406.queue-reconstruction-by-height.cpp) |
| [0407.Trapping Rain Water II](.doc/0407.trapping-rain-water-ii.md) | Hard (47.89%) | heap, breadth-first-search | [cpp](.cpp/0407.trapping-rain-water-ii.cpp) |
| 0408.Valid Word Abbreviation 🔒 | Easy (35.65%) | string, two-pointers | [cpp](.cpp/0408.valid-word-abbreviation.cpp) |
| [0409.Longest Palindrome](.doc/0409.longest-palindrome.md) | Easy (53.90%) | hash-table, string, palindrome | [cpp](.cpp/0409.longest-palindrome.cpp) |
| [0410.Split Array Largest Sum](.doc/0410.split-array-largest-sum.md) | Hard (55.20%) | binary-search, dynamic-programming, prefix-sum, array, target-sum | [cpp](.cpp/0410.split-array-largest-sum.cpp) |
| 0411.Minimum Unique Word Abbreviation 🔒 | Hard (39.71%) | heap, bit-manipulation, string | [cpp](.cpp/0411.minimum-unique-word-abbreviation.cpp) |
| [0412.Fizz Buzz](.doc/0412.fizz-buzz.md) | Easy (72.00%) | easy | [cpp](.cpp/0412.fizz-buzz.cpp) |
| [0413.Arithmetic Slices](.doc/0413.arithmetic-slices.md) | Medium (65.04%) | math, dynamic-programming | [cpp](.cpp/0413.arithmetic-slices.cpp) |
| [0414.Third Maximum Number](.doc/0414.third-maximum-number.md) | Easy (34.76%) | array | [cpp](.cpp/0414.third-maximum-number.cpp) |
| [0415.Add Strings](.doc/0415.add-strings.md) | Easy (51.71%) | string, arithmetic, two-pointers | [cpp](.cpp/0415.add-strings.cpp) |
| [0416.Partition Equal Subset Sum](.doc/0416.partition-equal-subset-sum.md) | Medium (46.25%) | dynamic-programming, bit-manipulation, array, target-sum | [cpp](.cpp/0416.partition-equal-subset-sum.cpp) |
| [0417.Pacific Atlantic Water Flow](.doc/0417.pacific-atlantic-water-flow.md) | Medium (55.15%) | depth-first-search, breadth-first-search, matrix | [cpp](.cpp/0417.pacific-atlantic-water-flow.cpp) |
| 0418.Sentence Screen Fitting 🔒 | Medium (36.10%) | greedy | [cpp](.cpp/0418.sentence-screen-fitting.cpp) |
| [0419.Battleships in a Board](.doc/0419.battleships-in-a-board.md) | Medium (75.30%) | matrix | [cpp](.cpp/0419.battleships-in-a-board.cpp) |
| [0420.Strong Password Checker](.doc/0420.strong-password-checker.md) | Hard (13.60%) | string, hard, heap | [cpp](.cpp/0420.strong-password-checker.cpp) |
| [0421.Maximum XOR of Two Numbers in an Array](.doc/0421.maximum-xor-of-two-numbers-in-an-array.md) | Medium (53.32%) | bit-manipulation, trie, array | [cpp](.cpp/0421.maximum-xor-of-two-numbers-in-an-array.cpp) |
| 0422.Valid Word Square 🔒 | Easy (40.91%) | matrix, string | [cpp](.cpp/0422.valid-word-square.cpp) |
| [0423.Reconstruct Original Digits from English](.doc/0423.reconstruct-original-digits-from-english.md) | Medium (51.10%) | string, math | [cpp](.cpp/0423.reconstruct-original-digits-from-english.cpp) |
| [0424.Longest Repeating Character Replacement](.doc/0424.longest-repeating-character-replacement.md) | Medium (53.72%) | string, sliding-window | [cpp](.cpp/0424.longest-repeating-character-replacement.cpp) |
| 0425.Word Squares 🔒 | Hard (53.30%) | trie, backtracking, string | [cpp](.cpp/0425.word-squares.cpp) |
| 0426.Convert Binary Search Tree to Sorted Doubly Linked List 🔒 | Medium (64.77%) | binary-tree, binary-search-tree, linked-list, recursion | [cpp](.cpp/0426.convert-binary-search-tree-to-sorted-doubly-linked-list.cpp) |
| [0427.Construct Quad Tree](.doc/0427.construct-quad-tree.md) | Medium (75.29%) | matrix, depth-first-search | [cpp](.cpp/0427.construct-quad-tree.cpp) |
| 0428.Serialize and Deserialize N-ary Tree 🔒 | Hard (66.89%) | tree, depth-first-search, breadth-first-search, design, serialization | [cpp](.cpp/0428.serialize-and-deserialize-n-ary-tree.cpp) |
| [0429.N-ary Tree Level Order Traversal](.doc/0429.n-ary-tree-level-order-traversal.md) | Medium (70.82%) | tree, breadth-first-search, depth-first-search | [cpp](.cpp/0429.n-ary-tree-level-order-traversal.cpp) |
| [0430.Flatten a Multilevel Doubly Linked List](.doc/0430.flatten-a-multilevel-doubly-linked-list.md) | Medium (60.03%) | linked-list, stack, recursion | [cpp](.cpp/0430.flatten-a-multilevel-doubly-linked-list.cpp) |
| 0431.Encode N-ary Tree to Binary Tree 🔒 | Hard (79.41%) | binary-tree, tree, recursion | [cpp](.cpp/0431.encode-n-ary-tree-to-binary-tree.cpp) |
| [0432.All O`one Data Structure](.doc/0432.all-o-one-data-structure.md) | Hard (36.73%) | hash-table, design, linked-list | [cpp](.cpp/0432.all-o-one-data-structure.cpp) |
| [0433.Minimum Genetic Mutation](.doc/0433.minimum-genetic-mutation.md) | Medium (53.59%) | breadth-first-search | [cpp](.cpp/0433.minimum-genetic-mutation.cpp) |
| [0434.Number of Segments in a String](.doc/0434.number-of-segments-in-a-string.md) | Easy (36.40%) | string | [cpp](.cpp/0434.number-of-segments-in-a-string.cpp) |
| [0435.Non-overlapping Intervals](.doc/0435.non-overlapping-intervals.md) | Medium (53.13%) | sort, greedy, interval | [cpp](.cpp/0435.non-overlapping-intervals.cpp) |
| [0436.Find Right Interval](.doc/0436.find-right-interval.md) | Medium (51.99%) | sort, array, binary-search, interval | [cpp](.cpp/0436.find-right-interval.cpp) |
| [0437.Path Sum III](.doc/0437.path-sum-iii.md) | Medium (46.43%) | binary-tree, hash-table, depth-first-search, prefix-sum | [cpp](.cpp/0437.path-sum-iii.cpp) |
| [0438.Find All Anagrams in a String](.doc/0438.find-all-anagrams-in-a-string.md) | Medium (50.86%) | sliding-window, hash-table | [cpp](.cpp/0438.find-all-anagrams-in-a-string.cpp) |
| 0439.Ternary Expression Parser 🔒 | Medium (60.77%) | stack, string | [cpp](.cpp/0439.ternary-expression-parser.cpp) |
| [0440.K-th Smallest in Lexicographical Order](.doc/0440.k-th-smallest-in-lexicographical-order.md) | Hard (32.14%) | tree, depth-first-search | [cpp](.cpp/0440.k-th-smallest-in-lexicographical-order.cpp) |
| [0441.Arranging Coins](.doc/0441.arranging-coins.md) | Easy (46.55%) | math, binary-search | [cpp](.cpp/0441.arranging-coins.cpp) |
| [0442.Find All Duplicates in an Array](.doc/0442.find-all-duplicates-in-an-array.md) | Medium (75.66%) | array, duplicate | [cpp](.cpp/0442.find-all-duplicates-in-an-array.cpp) |
| [0443.String Compression](.doc/0443.string-compression.md) | Medium (54.27%) | two-pointers | [cpp](.cpp/0443.string-compression.cpp) |
| 0444.Sequence Reconstruction 🔒 | Medium (28.08%) | graph, topological-sort | [cpp](.cpp/0444.sequence-reconstruction.cpp) |
| [0445.Add Two Numbers II](.doc/0445.add-two-numbers-ii.md) | Medium (61.12%) | linked-list, arithmetic | [cpp](.cpp/0445.add-two-numbers-ii.cpp) |
| [0446.Arithmetic Slices II - Subsequence](.doc/0446.arithmetic-slices-ii-subsequence.md) | Hard (54.58%) | dynamic-programming, hash-table | [cpp](.cpp/0446.arithmetic-slices-ii-subsequence.cpp) |
| [0447.Number of Boomerangs](.doc/0447.number-of-boomerangs.md) | Medium (55.40%) | hash-table, math | [cpp](.cpp/0447.number-of-boomerangs.cpp) |
| [0448.Find All Numbers Disappeared in an Array](.doc/0448.find-all-numbers-disappeared-in-an-array.md) | Easy (60.91%) | array, hash-table | [cpp](.cpp/0448.find-all-numbers-disappeared-in-an-array.cpp) |
| [0449.Serialize and Deserialize BST](.doc/0449.serialize-and-deserialize-bst.md) | Medium (57.62%) | binary-search-tree, binary-tree, design, monotonous-stack, serialization | [cpp](.cpp/0449.serialize-and-deserialize-bst.cpp) |
| [0450.Delete Node in a BST](.doc/0450.delete-node-in-a-bst.md) | Medium (51.17%) | binary-search-tree, binary-tree, recursion | [cpp](.cpp/0450.delete-node-in-a-bst.cpp) |
| [0451.Sort Characters By Frequency](.doc/0451.sort-characters-by-frequency.md) | Medium (72.51%) | hash-table, heap, sort, string, bucket-sort | [cpp](.cpp/0451.sort-characters-by-frequency.cpp) |
| [0452.Minimum Number of Arrows to Burst Balloons](.doc/0452.minimum-number-of-arrows-to-burst-balloons.md) | Medium (58.87%) | interval, greedy, sort | [cpp](.cpp/0452.minimum-number-of-arrows-to-burst-balloons.cpp) |
| [0453.Minimum Moves to Equal Array Elements](.doc/0453.minimum-moves-to-equal-array-elements.md) | Medium (56.69%) | array, math | [cpp](.cpp/0453.minimum-moves-to-equal-array-elements.cpp) |
| [0454.4Sum II](.doc/0454.4-sum-ii.md) | Medium (57.23%) | hash-table | [cpp](.cpp/0454.4-sum-ii.cpp) |
| [0455.Assign Cookies](.doc/0455.assign-cookies.md) | Easy (52.67%) | greedy | [cpp](.cpp/0455.assign-cookies.cpp) |
| [0456.132 Pattern](.doc/0456.132-pattern.md) | Medium (33.75%) | monotonic-stack, array | [cpp](.cpp/0456.132-pattern.cpp) |
| [0457.Circular Array Loop](.doc/0457.circular-array-loop.md) | Medium (33.92%) | fast-slow-pointers, array | [cpp](.cpp/0457.circular-array-loop.cpp) |
| [0458.Poor Pigs](.doc/0458.poor-pigs.md) | Hard (59.75%) | math | [cpp](.cpp/0458.poor-pigs.cpp) |
| [0459.Repeated Substring Pattern](.doc/0459.repeated-substring-pattern.md) | Easy (46.07%) | string | [cpp](.cpp/0459.repeated-substring-pattern.cpp) |
| [0460.LFU Cache](.doc/0460.lfu-cache.md) | Hard (44.11%) | design | [cpp](.cpp/0460.lfu-cache.cpp) |
| [0461.Hamming Distance](.doc/0461.hamming-distance.md) | Easy (75.37%) | bit-manipulation | [cpp](.cpp/0461.hamming-distance.cpp) |
| [0462.Minimum Moves to Equal Array Elements II](.doc/0462.minimum-moves-to-equal-array-elements-ii.md) | Medium (60.10%) | sort, partition | [cpp](.cpp/0462.minimum-moves-to-equal-array-elements-ii.cpp) |
| [0463.Island Perimeter](.doc/0463.island-perimeter.md) | Easy (70.35%) | geometry | [cpp](.cpp/0463.island-perimeter.cpp) |
| [0464.Can I Win](.doc/0464.can-i-win.md) | Medium (29.66%) | depth-first-search, memoization, minimax | [cpp](.cpp/0464.can-i-win.cpp) |
| 0465.Optimal Account Balancing 🔒 | Hard (49.56%) | bit-manipulation, dynamic-programming | [cpp](.cpp/0465.optimal-account-balancing.cpp) |
| [0466.Count The Repetitions](.doc/0466.count-the-repetitions.md) | Hard (30.12%) | string, hard | [cpp](.cpp/0466.count-the-repetitions.cpp) |
| [0467.Unique Substrings in Wraparound String](.doc/0467.unique-substrings-in-wraparound-string.md) | Medium (39.56%) | dynamic-programming | [cpp](.cpp/0467.unique-substrings-in-wraparound-string.cpp) |
| [0468.Validate IP Address](.doc/0468.validate-ip-address.md) | Medium (26.95%) | string | [cpp](.cpp/0468.validate-ip-address.cpp) |
| 0469.Convex Polygon 🔒 | Medium (39.38%) | math, geometry | [cpp](.cpp/0469.convex-polygon.cpp) |
| [0470.Implement Rand10() Using Rand7()](.doc/0470.implement-rand-10-using-rand-7.md) | Medium (45.97%) | math, random | [cpp](.cpp/0470.implement-rand-10-using-rand-7.cpp) |
| 0471.Encode String with Shortest Length 🔒 | Hard (50.43%) | string, dynamic-programming | [cpp](.cpp/0471.encode-string-with-shortest-length.cpp) |
| [0472.Concatenated Words](.doc/0472.concatenated-words.md) | Hard (49.46%) | string, trie, depth-first-search | [cpp](.cpp/0472.concatenated-words.cpp) |
| [0473.Matchsticks to Square](.doc/0473.matchsticks-to-square.md) | Medium (40.24%) | depth-first-search, dynamic-programming, bit-manipulation, backtracking | [cpp](.cpp/0473.matchsticks-to-square.cpp) |
| [0474.Ones and Zeroes](.doc/0474.ones-and-zeroes.md) | Medium (47.53%) | dynamic-programming, depth-first-search, memoization | [cpp](.cpp/0474.ones-and-zeroes.cpp) |
| [0475.Heaters](.doc/0475.heaters.md) | Medium (37.73%) | binary-search, sort | [cpp](.cpp/0475.heaters.cpp) |
| [0476.Number Complement](.doc/0476.number-complement.md) | Easy (67.60%) | bit-manipulation | [cpp](.cpp/0476.number-complement.cpp) |
| [0477.Total Hamming Distance](.doc/0477.total-hamming-distance.md) | Medium (52.55%) | bit-manipulation | [cpp](.cpp/0477.total-hamming-distance.cpp) |
| [0478.Generate Random Point in a Circle](.doc/0478.generate-random-point-in-a-circle.md) | Medium (39.78%) | geometry, random, math | [cpp](.cpp/0478.generate-random-point-in-a-circle.cpp) |
| [0479.Largest Palindrome Product](.doc/0479.largest-palindrome-product.md) | Hard (33.18%) | math, palindrome | [cpp](.cpp/0479.largest-palindrome-product.cpp) |
| [0480.Sliding Window Median](.doc/0480.sliding-window-median.md) | Hard (39.25%) | sliding-window, multiset, heap, hash-table, hard | [cpp](.cpp/0480.sliding-window-median.cpp) |
| [0481.Magical String](.doc/0481.magical-string.md) | Medium (51.20%) | math, string | [cpp](.cpp/0481.magical-string.cpp) |
| [0482.License Key Formatting](.doc/0482.license-key-formatting.md) | Easy (43.72%) | string | [cpp](.cpp/0482.license-key-formatting.cpp) |
| [0483.Smallest Good Base](.doc/0483.smallest-good-base.md) | Hard (40.44%) | math, binary-search, hard | [cpp](.cpp/0483.smallest-good-base.cpp) |
| 0484.Find Permutation 🔒 | Medium (66.86%) | string, permutation, greedy | [cpp](.cpp/0484.find-permutation.cpp) |
| [0485.Max Consecutive Ones](.doc/0485.max-consecutive-ones.md) | Easy (58.89%) | array | [cpp](.cpp/0485.max-consecutive-ones.cpp) |
| [0486.Predict the Winner](.doc/0486.predict-the-winner.md) | Medium (55.45%) | minimax, dynamic-programming, game-theory, depth-first-search, memoization | [cpp](.cpp/0486.predict-the-winner.cpp) |
| 0487.Max Consecutive Ones II 🔒 | Medium (50.33%) | array, sliding-window | [cpp](.cpp/0487.max-consecutive-ones-ii.cpp) |
| [0488.Zuma Game](.doc/0488.zuma-game.md) | Hard (32.92%) | recursion, depth-first-search, memoization | [cpp](.cpp/0488.zuma-game.cpp) |
| 0489.Robot Room Cleaner 🔒 | Hard (76.67%) | depth-first-search | [cpp](.cpp/0489.robot-room-cleaner.cpp) |
| 0490.The Maze 🔒 | Medium (57.78%) | breadth-first-search | [cpp](.cpp/0490.the-maze.cpp) |
| [0491.Non-decreasing Subsequences](.doc/0491.non-decreasing-subsequences.md) | Medium (60.65%) | depth-first-search, array | [cpp](.cpp/0491.non-decreasing-subsequences.cpp) |
| [0492.Construct the Rectangle](.doc/0492.construct-the-rectangle.md) | Easy (57.37%) | math, geometry | [cpp](.cpp/0492.construct-the-rectangle.cpp) |
| [0493.Reverse Pairs](.doc/0493.reverse-pairs.md) | Hard (30.57%) | array, merge-sort, binary-indexed-tree, segment-tree, hash-table | [cpp](.cpp/0493.reverse-pairs.cpp) |
| [0494.Target Sum](.doc/0494.target-sum.md) | Medium (46.70%) | dynamic-programming, array, arithmetic | [cpp](.cpp/0494.target-sum.cpp) |
| [0495.Teemo Attacking](.doc/0495.teemo-attacking.md) | Easy (56.56%) | array | [cpp](.cpp/0495.teemo-attacking.cpp) |
| [0496.Next Greater Element I](.doc/0496.next-greater-element-i.md) | Easy (72.13%) | array, stack, monotonic-stack, hash-table | [cpp](.cpp/0496.next-greater-element-i.cpp) |
| [0497.Random Point in Non-overlapping Rectangles](.doc/0497.random-point-in-non-overlapping-rectangles.md) | Medium (39.95%) | prefix-sum, random, binary-search | [cpp](.cpp/0497.random-point-in-non-overlapping-rectangles.cpp) |
| [0498.Diagonal Traverse](.doc/0498.diagonal-traverse.md) | Medium (60.06%) | matrix | [cpp](.cpp/0498.diagonal-traverse.cpp) |
| 0499.The Maze III 🔒 | Hard (48.67%) | breadth-first-search | [cpp](.cpp/0499.the-maze-iii.cpp) |
| [0500.Keyboard Row](.doc/0500.keyboard-row.md) | Easy (70.61%) | hash-table | [cpp](.cpp/0500.keyboard-row.cpp) |
| [0501.Find Mode in Binary Search Tree](.doc/0501.find-mode-in-binary-search-tree.md) | Easy (56.03%) | binary-search-tree, binary-tree | [cpp](.cpp/0501.find-mode-in-binary-search-tree.cpp) |
| [0502.IPO](.doc/0502.ipo.md) | Hard (49.55%) | heap, sort, greedy | [cpp](.cpp/0502.ipo.cpp) |
| [0503.Next Greater Element II](.doc/0503.next-greater-element-ii.md) | Medium (63.78%) | monotonic-stack, array | [cpp](.cpp/0503.next-greater-element-ii.cpp) |
| [0504.Base 7](.doc/0504.base-7.md) | Easy (49.89%) | math | [cpp](.cpp/0504.base-7.cpp) |
| 0505.The Maze II 🔒 | Medium (53.35%) | breadth-first-search | [cpp](.cpp/0505.the-maze-ii.cpp) |
| [0506.Relative Ranks](.doc/0506.relative-ranks.md) | Easy (63.70%) | array, sort, heap, ordered-map, hash-table | [cpp](.cpp/0506.relative-ranks.cpp) |
| [0507.Perfect Number](.doc/0507.perfect-number.md) | Easy (40.16%) | math | [cpp](.cpp/0507.perfect-number.cpp) |
| [0508.Most Frequent Subtree Sum](.doc/0508.most-frequent-subtree-sum.md) | Medium (66.27%) | binary-tree, hash-table, depth-first-search | [cpp](.cpp/0508.most-frequent-subtree-sum.cpp) |
| [0509.Fibonacci Number](.doc/0509.fibonacci-number.md) | Easy (70.93%) | fibonacci, dynamic-programming | [cpp](.cpp/0509.fibonacci-number.cpp) |
| 0510.Inorder Successor in BST II 🔒 | Medium (60.92%) | binary-tree, binary-search-tree | [cpp](.cpp/0510.inorder-successor-in-bst-ii.cpp) |
| [0513.Find Bottom Left Tree Value](.doc/0513.find-bottom-left-tree-value.md) | Medium (71.09%) | binary-tree, depth-first-search, breadth-first-search | [cpp](.cpp/0513.find-bottom-left-tree-value.cpp) |
| [0514.Freedom Trail](.doc/0514.freedom-trail.md) | Hard (47.72%) | dynamic-programming, depth-first-search, memoization | [cpp](.cpp/0514.freedom-trail.cpp) |
| [0515.Find Largest Value in Each Tree Row](.doc/0515.find-largest-value-in-each-tree-row.md) | Medium (65.66%) | binary-tree, depth-first-search, breadth-first-search | [cpp](.cpp/0515.find-largest-value-in-each-tree-row.cpp) |
| [0516.Longest Palindromic Subsequence](.doc/0516.longest-palindromic-subsequence.md) | Medium (62.52%) | dynamic-programming, palindrome | [cpp](.cpp/0516.longest-palindromic-subsequence.cpp) |
| [0517.Super Washing Machines](.doc/0517.super-washing-machines.md) | Hard (41.14%) | math, greedy | [cpp](.cpp/0517.super-washing-machines.cpp) |
| [0518.Coin Change II](.doc/0518.coin-change-ii.md) | Medium (63.76%) | dynamic-programming, coin-change | [cpp](.cpp/0518.coin-change-ii.cpp) |
| [0519.Random Flip Matrix](.doc/0519.random-flip-matrix.md) | Medium (41.82%) | random, design, array | [cpp](.cpp/0519.random-flip-matrix.cpp) |
| [0520.Detect Capital](.doc/0520.detect-capital.md) | Easy (56.50%) | string | [cpp](.cpp/0520.detect-capital.cpp) |
| [0521.Longest Uncommon Subsequence I](.doc/0521.longest-uncommon-subsequence-i.md) | Easy (60.69%) | string | [cpp](.cpp/0521.longest-uncommon-subsequence-i.cpp) |
| [0522.Longest Uncommon Subsequence II](.doc/0522.longest-uncommon-subsequence-ii.md) | Medium (41.28%) | string, sort, two-pointers | [cpp](.cpp/0522.longest-uncommon-subsequence-ii.cpp) |
| [0523.Continuous Subarray Sum](.doc/0523.continuous-subarray-sum.md) | Medium (28.87%) | prefix-sum, hash-table | [cpp](.cpp/0523.continuous-subarray-sum.cpp) |
| [0524.Longest Word in Dictionary through Deleting](.doc/0524.longest-word-in-dictionary-through-deleting.md) | Medium (51.16%) | two-pointers, sort, string | [cpp](.cpp/0524.longest-word-in-dictionary-through-deleting.cpp) |
| [0525.Contiguous Array](.doc/0525.contiguous-array.md) | Medium (48.93%) | hash-table, array, prefix-sum | [cpp](.cpp/0525.contiguous-array.cpp) |
| [0526.Beautiful Arrangement](.doc/0526.beautiful-arrangement.md) | Medium (64.24%) | permutation, recursion | [cpp](.cpp/0526.beautiful-arrangement.cpp) |
| 0527.Word Abbreviation 🔒 | Hard (60.95%) | trie, string | [cpp](.cpp/0527.word-abbreviation.cpp) |
| [0528.Random Pick with Weight](.doc/0528.random-pick-with-weight.md) | Medium (46.73%) | prefix-sum, random, binary-search | [cpp](.cpp/0528.random-pick-with-weight.cpp) |
| [0529.Minesweeper](.doc/0529.minesweeper.md) | Medium (66.54%) | matrix, depth-first-search, design | [cpp](.cpp/0529.minesweeper.cpp) |
| [0530.Minimum Absolute Difference in BST](.doc/0530.minimum-absolute-difference-in-bst.md) | Easy (58.39%) | binary-search-tree, binary-tree | [cpp](.cpp/0530.minimum-absolute-difference-in-bst.cpp) |
| 0531.Lonely Pixel I 🔒 | Medium (62.26%) | matrix | [cpp](.cpp/0531.lonely-pixel-i.cpp) |
| [0532.K-diff Pairs in an Array](.doc/0532.k-diff-pairs-in-an-array.md) | Medium (42.70%) | array, hash-table | [cpp](.cpp/0532.k-diff-pairs-in-an-array.cpp) |
| 0533.Lonely Pixel II 🔒 | Medium (48.59%) | matrix, array | [cpp](.cpp/0533.lonely-pixel-ii.cpp) |
| [0535.Encode and Decode TinyURL](.doc/0535.encode-and-decode-tiny-url.md) | Medium (86.33%) | hash-table, design | [cpp](.cpp/0535.encode-and-decode-tiny-url.cpp) |
| 0536.Construct Binary Tree from String 🔒 | Medium (56.81%) | binary-tree, string, recursion | [cpp](.cpp/0536.construct-binary-tree-from-string.cpp) |
| [0537.Complex Number Multiplication](.doc/0537.complex-number-multiplication.md) | Medium (71.75%) | math, string, arithmetic | [cpp](.cpp/0537.complex-number-multiplication.cpp) |
| [0538.Convert BST to Greater Tree](.doc/0538.convert-bst-to-greater-tree.md) | Medium (68.94%) | binary-search-tree, binary-tree, stack | [cpp](.cpp/0538.convert-bst-to-greater-tree.cpp) |
| [0539.Minimum Time Difference](.doc/0539.minimum-time-difference.md) | Medium (56.81%) | string, array, sort, bitmap | [cpp](.cpp/0539.minimum-time-difference.cpp) |
| [0540.Single Element in a Sorted Array](.doc/0540.single-element-in-a-sorted-array.md) | Medium (59.01%) | binary-search, bit-manipulation, duplicate | [cpp](.cpp/0540.single-element-in-a-sorted-array.cpp) |
| [0541.Reverse String II](.doc/0541.reverse-string-ii.md) | Easy (50.63%) | string | [cpp](.cpp/0541.reverse-string-ii.cpp) |
| [0542.01 Matrix](.doc/0542.01-matrix.md) | Medium (48.33%) | breadth-first-search, matrix, dynamic-programming | [cpp](.cpp/0542.01-matrix.cpp) |
| [0543.Diameter of Binary Tree](.doc/0543.diameter-of-binary-tree.md) | Easy (60.21%) | binary-tree, depth-first-search | [cpp](.cpp/0543.diameter-of-binary-tree.cpp) |
| 0544.Output Contest Matches 🔒 | Medium (77.11%) | array | [cpp](.cpp/0544.output-contest-matches.cpp) |
| 0545.Boundary of Binary Tree 🔒 | Medium (45.32%) | binary-tree | [cpp](.cpp/0545.boundary-of-binary-tree.cpp) |
| [0546.Remove Boxes](.doc/0546.remove-boxes.md) | Hard (47.74%) | depth-first-search, memoization, hard | [cpp](.cpp/0546.remove-boxes.cpp) |
| [0547.Number of Provinces](.doc/0547.number-of-provinces.md) | Medium (66.08%) | graph, union-find | [cpp](.cpp/0547.number-of-provinces.cpp) |
| 0548.Split Array with Equal Sum 🔒 | Hard (50.11%) | prefix-sum, hash-table | [cpp](.cpp/0548.split-array-with-equal-sum.cpp) |
| 0549.Binary Tree Longest Consecutive Sequence II 🔒 | Medium (49.47%) | binary-tree, depth-first-search | [cpp](.cpp/0549.binary-tree-longest-consecutive-sequence-ii.cpp) |
| [0551.Student Attendance Record I](.doc/0551.student-attendance-record-i.md) | Easy (48.72%) | string, regex | [cpp](.cpp/0551.student-attendance-record-i.cpp) |
| [0552.Student Attendance Record II](.doc/0552.student-attendance-record-ii.md) | Hard (42.71%) | depth-first-search, memoization | [cpp](.cpp/0552.student-attendance-record-ii.cpp) |
| [0553.Optimal Division](.doc/0553.optimal-division.md) | Medium (60.69%) | math | [cpp](.cpp/0553.optimal-division.cpp) |
| [0554.Brick Wall](.doc/0554.brick-wall.md) | Medium (54.72%) | hash-table | [cpp](.cpp/0554.brick-wall.cpp) |
| 0555.Split Concatenated Strings 🔒 | Medium (43.46%) | greedy, string | [cpp](.cpp/0555.split-concatenated-strings.cpp) |
| [0556.Next Greater Element III](.doc/0556.next-greater-element-iii.md) | Medium (34.02%) | permutation, string | [cpp](.cpp/0556.next-greater-element-iii.cpp) |
| [0557.Reverse Words in a String III](.doc/0557.reverse-words-in-a-string-iii.md) | Easy (83.03%) | string, stack, two-pointers | [cpp](.cpp/0557.reverse-words-in-a-string-iii.cpp) |
| [0558.Logical OR of Two Binary Grids Represented as Quad-Trees](.doc/0558.logical-or-of-two-binary-grids-represented-as-quad-trees.md) | Medium (49.55%) | tree, depth-first-search | [cpp](.cpp/0558.logical-or-of-two-binary-grids-represented-as-quad-trees.cpp) |
| [0559.Maximum Depth of N-ary Tree](.doc/0559.maximum-depth-of-n-ary-tree.md) | Easy (72.11%) | tree, depth-first-search | [cpp](.cpp/0559.maximum-depth-of-n-ary-tree.cpp) |
| [0560.Subarray Sum Equals K](.doc/0560.subarray-sum-equals-k.md) | Medium (43.54%) | array, hash-table, prefix-sum | [cpp](.cpp/0560.subarray-sum-equals-k.cpp) |
| [0561.Array Partition](.doc/0561.array-partition.md) | Easy (78.71%) | array, sort | [cpp](.cpp/0561.array-partition.cpp) |
| 0562.Longest Line of Consecutive One in Matrix 🔒 | Medium (50.36%) | dynamic-programming, matrix | [cpp](.cpp/0562.longest-line-of-consecutive-one-in-matrix.cpp) |
| [0563.Binary Tree Tilt](.doc/0563.binary-tree-tilt.md) | Easy (61.69%) | binary-tree, depth-first-search | [cpp](.cpp/0563.binary-tree-tilt.cpp) |
| [0564.Find the Closest Palindrome](.doc/0564.find-the-closest-palindrome.md) | Hard (22.28%) | palindrome, string | [cpp](.cpp/0564.find-the-closest-palindrome.cpp) |
| [0565.Array Nesting](.doc/0565.array-nesting.md) | Medium (56.34%) | array | [cpp](.cpp/0565.array-nesting.cpp) |
| [0566.Reshape the Matrix](.doc/0566.reshape-the-matrix.md) | Easy (63.08%) | matrix | [cpp](.cpp/0566.reshape-the-matrix.cpp) |
| [0567.Permutation in String](.doc/0567.permutation-in-string.md) | Medium (44.33%) | sliding-window, hash-table, string | [cpp](.cpp/0567.permutation-in-string.cpp) |
| 0568.Maximum Vacation Days 🔒 | Hard (45.57%) | dynamic-programming | [cpp](.cpp/0568.maximum-vacation-days.cpp) |
| [0572.Subtree of Another Tree](.doc/0572.subtree-of-another-tree.md) | Easy (47.78%) | binary-tree, depth-first-search | [cpp](.cpp/0572.subtree-of-another-tree.cpp) |
| 0573.Squirrel Simulation 🔒 | Medium (57.10%) | planning, greedy | [cpp](.cpp/0573.squirrel-simulation.cpp) |
| [0575.Distribute Candies](.doc/0575.distribute-candies.md) | Easy (67.58%) | hash-table | [cpp](.cpp/0575.distribute-candies.cpp) |
| [0576.Out of Boundary Paths](.doc/0576.out-of-boundary-paths.md) | Medium (48.07%) | dynamic-programming, depth-first-search, memoization, matrix | [cpp](.cpp/0576.out-of-boundary-paths.cpp) |
| [0581.Shortest Unsorted Continuous Subarray](.doc/0581.shortest-unsorted-continuous-subarray.md) | Medium (36.81%) | array, sort, two-pointers, sliding-window | [cpp](.cpp/0581.shortest-unsorted-continuous-subarray.cpp) |
| 0582.Kill Process 🔒 | Medium (69.27%) | tree, graph, depth-first-search | [cpp](.cpp/0582.kill-process.cpp) |
| [0583.Delete Operation for Two Strings](.doc/0583.delete-operation-for-two-strings.md) | Medium (61.47%) | string, dynamic-programming | [cpp](.cpp/0583.delete-operation-for-two-strings.cpp) |
| [0587.Erect the Fence](.doc/0587.erect-the-fence.md) | Hard (51.92%) | geometry | [cpp](.cpp/0587.erect-the-fence.cpp) |
| 0588.Design In-Memory File System 🔒 | Hard (48.14%) | design, hash-table, trie | [cpp](.cpp/0588.design-in-memory-file-system.cpp) |
| [0589.N-ary Tree Preorder Traversal](.doc/0589.n-ary-tree-preorder-traversal.md) | Easy (75.46%) | stack, tree | [cpp](.cpp/0589.n-ary-tree-preorder-traversal.cpp) |
| [0590.N-ary Tree Postorder Traversal](.doc/0590.n-ary-tree-postorder-traversal.md) | Easy (77.84%) | stack, tree | [cpp](.cpp/0590.n-ary-tree-postorder-traversal.cpp) |
| [0591.Tag Validator](.doc/0591.tag-validator.md) | Hard (38.14%) | string, stack | [cpp](.cpp/0591.tag-validator.cpp) |
| [0592.Fraction Addition and Subtraction](.doc/0592.fraction-addition-and-subtraction.md) | Medium (53.15%) | math, string, arithmetic, greatest-common-divisor | [cpp](.cpp/0592.fraction-addition-and-subtraction.cpp) |
| [0593.Valid Square](.doc/0593.valid-square.md) | Medium (43.99%) | math, hash-table, geometry | [cpp](.cpp/0593.valid-square.cpp) |
| [0594.Longest Harmonious Subsequence](.doc/0594.longest-harmonious-subsequence.md) | Easy (54.60%) | hash-table, array, ordered-map, sliding-window, sort | [cpp](.cpp/0594.longest-harmonious-subsequence.cpp) |
| [0598.Range Addition II](.doc/0598.range-addition-ii.md) | Easy (56.04%) | math, matrix | [cpp](.cpp/0598.range-addition-ii.cpp) |
| [0599.Minimum Index Sum of Two Lists](.doc/0599.minimum-index-sum-of-two-lists.md) | Easy (55.26%) | hash-table, string | [cpp](.cpp/0599.minimum-index-sum-of-two-lists.cpp) |
| [0600.Non-negative Integers without Consecutive Ones](.doc/0600.non-negative-integers-without-consecutive-ones.md) | Hard (39.71%) | math, dynamic-programming, bit-manipulation | [cpp](.cpp/0600.non-negative-integers-without-consecutive-ones.cpp) |
| 0604.Design Compressed String Iterator 🔒 | Easy (39.74%) | design, string | [cpp](.cpp/0604.design-compressed-string-iterator.cpp) |
| [0605.Can Place Flowers](.doc/0605.can-place-flowers.md) | Easy (29.25%) | array, greedy | [cpp](.cpp/0605.can-place-flowers.cpp) |
| [0606.Construct String from Binary Tree](.doc/0606.construct-string-from-binary-tree.md) | Medium (69.13%) | binary-tree, string | [cpp](.cpp/0606.construct-string-from-binary-tree.cpp) |
| [0609.Find Duplicate File in System](.doc/0609.find-duplicate-file-in-system.md) | Medium (67.62%) | hash-table, string | [cpp](.cpp/0609.find-duplicate-file-in-system.cpp) |
| [0611.Valid Triangle Number](.doc/0611.valid-triangle-number.md) | Medium (51.09%) | binary-search, array, sort, two-pointers | [cpp](.cpp/0611.valid-triangle-number.cpp) |
| 0616.Add Bold Tag in String 🔒 | Medium (49.67%) | string, trie | [cpp](.cpp/0616.add-bold-tag-in-string.cpp) |
| [0617.Merge Two Binary Trees](.doc/0617.merge-two-binary-trees.md) | Easy (78.91%) | binary-tree, depth-first-search | [cpp](.cpp/0617.merge-two-binary-trees.cpp) |
| [0621.Task Scheduler](.doc/0621.task-scheduler.md) | Medium (59.85%) | array, hash-table, greedy | [cpp](.cpp/0621.task-scheduler.cpp) |
| [0622.Design Circular Queue](.doc/0622.design-circular-queue.md) | Medium (51.41%) | design, queue, linked-list, array | [cpp](.cpp/0622.design-circular-queue.cpp) |
| [0623.Add One Row to Tree](.doc/0623.add-one-row-to-tree.md) | Medium (59.63%) | binary-tree, depth-first-search, breadth-first-search | [cpp](.cpp/0623.add-one-row-to-tree.cpp) |
| [0624.Maximum Distance in Arrays](.doc/0624.maximum-distance-in-arrays.md) | Medium (42.41%) | array | [cpp](.cpp/0624.maximum-distance-in-arrays.cpp) |
| 0625.Minimum Factorization 🔒 | Medium (33.59%) | greedy, math | [cpp](.cpp/0625.minimum-factorization.cpp) |
| [0628.Maximum Product of Three Numbers](.doc/0628.maximum-product-of-three-numbers.md) | Easy (45.30%) | sort, math, array, greedy | [cpp](.cpp/0628.maximum-product-of-three-numbers.cpp) |
| [0629.K Inverse Pairs Array](.doc/0629.k-inverse-pairs-array.md) | Hard (50.04%) | dynamic-programming, array, math | [cpp](.cpp/0629.k-inverse-pairs-array.cpp) |
| [0630.Course Schedule III](.doc/0630.course-schedule-iii.md) | Hard (40.18%) | greedy, heap | [cpp](.cpp/0630.course-schedule-iii.cpp) |
| 0631.Design Excel Sum Formula 🔒 | Hard (43.69%) | design, matrix | [cpp](.cpp/0631.design-excel-sum-formula.cpp) |
| [0632.Smallest Range Covering Elements from K Lists](.doc/0632.smallest-range-covering-elements-from-k-lists.md) | Hard (62.41%) | heap, hash-table, sort, sliding-window | [cpp](.cpp/0632.smallest-range-covering-elements-from-k-lists.cpp) |
| [0633.Sum of Square Numbers](.doc/0633.sum-of-square-numbers.md) | Medium (33.97%) | math, two-pointers | [cpp](.cpp/0633.sum-of-square-numbers.cpp) |
| 0634.Find the Derangement of An Array 🔒 | Medium (41.95%) | dynamic-programming | [cpp](.cpp/0634.find-the-derangement-of-an-array.cpp) |
| 0635.Design Log Storage System 🔒 | Medium (61.39%) | string, design, ordered-map, binary-search | [cpp](.cpp/0635.design-log-storage-system.cpp) |
| [0636.Exclusive Time of Functions](.doc/0636.exclusive-time-of-functions.md) | Medium (62.44%) | stack | [cpp](.cpp/0636.exclusive-time-of-functions.cpp) |
| [0637.Average of Levels in Binary Tree](.doc/0637.average-of-levels-in-binary-tree.md) | Easy (72.43%) | binary-tree | [cpp](.cpp/0637.average-of-levels-in-binary-tree.cpp) |
| [0638.Shopping Offers](.doc/0638.shopping-offers.md) | Medium (52.17%) | memorization, recursion | [cpp](.cpp/0638.shopping-offers.cpp) |
| [0639.Decode Ways II](.doc/0639.decode-ways-ii.md) | Hard (30.69%) | dynamic-programming | [cpp](.cpp/0639.decode-ways-ii.cpp) |
| [0640.Solve the Equation](.doc/0640.solve-the-equation.md) | Medium (43.73%) | math, string | [cpp](.cpp/0640.solve-the-equation.cpp) |
| [0641.Design Circular Deque](.doc/0641.design-circular-deque.md) | Medium (56.86%) | design, queue, linked-list, array | [cpp](.cpp/0641.design-circular-deque.cpp) |
| 0642.Design Search Autocomplete System 🔒 | Hard (48.89%) | trie, string, design, sort | [cpp](.cpp/0642.design-search-autocomplete-system.cpp) |
| [0643.Maximum Average Subarray I](.doc/0643.maximum-average-subarray-i.md) | Easy (43.26%) | array, sliding-window, prefix-sum | [cpp](.cpp/0643.maximum-average-subarray-i.cpp) |
| 0644.Maximum Average Subarray II 🔒 | Hard (36.64%) | binary-search, array, prefix-sum | [cpp](.cpp/0644.maximum-average-subarray-ii.cpp) |
| [0645.Set Mismatch](.doc/0645.set-mismatch.md) | Easy (44.54%) | hash-table, math, in-place | [cpp](.cpp/0645.set-mismatch.cpp) |
| [0646.Maximum Length of Pair Chain](.doc/0646.maximum-length-of-pair-chain.md) | Medium (59.76%) | dynamic-programming, greedy, sort | [cpp](.cpp/0646.maximum-length-of-pair-chain.cpp) |
| [0647.Palindromic Substrings](.doc/0647.palindromic-substrings.md) | Medium (70.05%) | string, dynamic-programming, palindrome, manacher | [cpp](.cpp/0647.palindromic-substrings.cpp) |
| [0648.Replace Words](.doc/0648.replace-words.md) | Medium (62.82%) | hash-table, trie, sort | [cpp](.cpp/0648.replace-words.cpp) |
| [0649.Dota2 Senate](.doc/0649.dota-2-senate.md) | Medium (47.53%) | greedy, queue | [cpp](.cpp/0649.dota-2-senate.cpp) |
| [0650.2 Keys Keyboard](.doc/0650.2-keys-keyboard.md) | Medium (54.06%) | dynamic-programming, math | [cpp](.cpp/0650.2-keys-keyboard.cpp) |
| 0651.4 Keys Keyboard 🔒 | Medium (56.09%) | dynamic-programming | [cpp](.cpp/0651.4-keys-keyboard.cpp) |
| [0652.Find Duplicate Subtrees](.doc/0652.find-duplicate-subtrees.md) | Medium (59.38%) | binary-tree, serialization | [cpp](.cpp/0652.find-duplicate-subtrees.cpp) |
| [0653.Two Sum IV - Input is a BST](.doc/0653.two-sum-iv-input-is-a-bst.md) | Easy (61.20%) | binary-search-tree, binary-tree, hash-table | [cpp](.cpp/0653.two-sum-iv-input-is-a-bst.cpp) |
| [0654.Maximum Binary Tree](.doc/0654.maximum-binary-tree.md) | Medium (85.32%) | binary-tree, array, monotonic-stack, divide-and-conquer | [cpp](.cpp/0654.maximum-binary-tree.cpp) |
| [0655.Print Binary Tree](.doc/0655.print-binary-tree.md) | Medium (63.42%) | binary-tree | [cpp](.cpp/0655.print-binary-tree.cpp) |
| 0656.Coin Path 🔒 | Hard (32.05%) | dynamic-programming | [cpp](.cpp/0656.coin-path.cpp) |
| [0657.Robot Return to Origin](.doc/0657.robot-return-to-origin.md) | Easy (75.68%) | easy | [cpp](.cpp/0657.robot-return-to-origin.cpp) |
| [0658.Find K Closest Elements](.doc/0658.find-k-closest-elements.md) | Medium (47.31%) | binary-search, two-pointers | [cpp](.cpp/0658.find-k-closest-elements.cpp) |
| [0659.Split Array into Consecutive Subsequences](.doc/0659.split-array-into-consecutive-subsequences.md) | Medium (51.03%) | hash-table, greedy | [cpp](.cpp/0659.split-array-into-consecutive-subsequences.cpp) |
| 0660.Remove 9 🔒 | Hard (57.42%) | math | [cpp](.cpp/0660.remove-9.cpp) |
| [0661.Image Smoother](.doc/0661.image-smoother.md) | Easy (67.23%) | matrix | [cpp](.cpp/0661.image-smoother.cpp) |
| [0662.Maximum Width of Binary Tree](.doc/0662.maximum-width-of-binary-tree.md) | Medium (42.95%) | binary-tree | [cpp](.cpp/0662.maximum-width-of-binary-tree.cpp) |
| 0663.Equal Tree Partition 🔒 | Medium (41.47%) | binary-tree, depth-first-search, hash-table | [cpp](.cpp/0663.equal-tree-partition.cpp) |
| [0664.Strange Printer](.doc/0664.strange-printer.md) | Hard (54.96%) | dynamic-programming, depth-first-search, memoization | [cpp](.cpp/0664.strange-printer.cpp) |
| [0665.Non-decreasing Array](.doc/0665.non-decreasing-array.md) | Medium (24.66%) | array | [cpp](.cpp/0665.non-decreasing-array.cpp) |
| 0666.Path Sum IV 🔒 | Medium (60.94%) | binary-tree, hash-table | [cpp](.cpp/0666.path-sum-iv.cpp) |
| [0667.Beautiful Arrangement II](.doc/0667.beautiful-arrangement-ii.md) | Medium (60.13%) | array, greedy, math, brainteaser | [cpp](.cpp/0667.beautiful-arrangement-ii.cpp) |
| [0668.Kth Smallest Number in Multiplication Table](.doc/0668.kth-smallest-number-in-multiplication-table.md) | Hard (51.62%) | matrix, binary-search | [cpp](.cpp/0668.kth-smallest-number-in-multiplication-table.cpp) |
| [0669.Trim a Binary Search Tree](.doc/0669.trim-a-binary-search-tree.md) | Medium (66.26%) | binary-search-tree, binary-tree, depth-first-search | [cpp](.cpp/0669.trim-a-binary-search-tree.cpp) |
| [0670.Maximum Swap](.doc/0670.maximum-swap.md) | Medium (48.58%) | math, greedy | [cpp](.cpp/0670.maximum-swap.cpp) |
| [0671.Second Minimum Node In a Binary Tree](.doc/0671.second-minimum-node-in-a-binary-tree.md) | Easy (44.50%) | binary-tree, depth-first-search | [cpp](.cpp/0671.second-minimum-node-in-a-binary-tree.cpp) |
| [0672.Bulb Switcher II](.doc/0672.bulb-switcher-ii.md) | Medium (50.07%) | math, bit-manipulation | [cpp](.cpp/0672.bulb-switcher-ii.cpp) |
| [0673.Number of Longest Increasing Subsequence](.doc/0673.number-of-longest-increasing-subsequence.md) | Medium (47.90%) | array, dynamic-programming | [cpp](.cpp/0673.number-of-longest-increasing-subsequence.cpp) |
| [0674.Longest Continuous Increasing Subsequence](.doc/0674.longest-continuous-increasing-subsequence.md) | Easy (50.17%) | array | [cpp](.cpp/0674.longest-continuous-increasing-subsequence.cpp) |
| [0675.Cut Off Trees for Golf Event](.doc/0675.cut-off-trees-for-golf-event.md) | Hard (34.30%) | sort, breadth-first-search, heap | [cpp](.cpp/0675.cut-off-trees-for-golf-event.cpp) |
| [0676.Implement Magic Dictionary](.doc/0676.implement-magic-dictionary.md) | Medium (57.33%) | hash-table, string, trie, design, depth-first-search | [cpp](.cpp/0676.implement-magic-dictionary.cpp) |
| [0677.Map Sum Pairs](.doc/0677.map-sum-pairs.md) | Medium (56.70%) | trie, hash-table, design, string, ordered-map | [cpp](.cpp/0677.map-sum-pairs.cpp) |
| [0678.Valid Parenthesis String](.doc/0678.valid-parenthesis-string.md) | Medium (37.87%) | string, dynamic-programming, greedy | [cpp](.cpp/0678.valid-parenthesis-string.cpp) |
| [0679.24 Game](.doc/0679.24-game.md) | Hard (49.32%) | depth-first-search, arithmetic | [cpp](.cpp/0679.24-game.cpp) |
| [0680.Valid Palindrome II](.doc/0680.valid-palindrome-ii.md) | Easy (40.56%) | string, palindrome, two-pointers | [cpp](.cpp/0680.valid-palindrome-ii.cpp) |
| 0681.Next Closest Time 🔒 | Medium (46.58%) | string | [cpp](.cpp/0681.next-closest-time.cpp) |
| [0682.Baseball Game](.doc/0682.baseball-game.md) | Easy (76.06%) | stack | [cpp](.cpp/0682.baseball-game.cpp) |
| 0683.K Empty Slots 🔒 | Hard (37.04%) | ordered-set | [cpp](.cpp/0683.k-empty-slots.cpp) |
| [0684.Redundant Connection](.doc/0684.redundant-connection.md) | Medium (62.78%) | graph, tree, union-find, breadth-first-search, depth-first-search | [cpp](.cpp/0684.redundant-connection.cpp) |
| [0685.Redundant Connection II](.doc/0685.redundant-connection-ii.md) | Hard (34.38%) | graph, union-find, tree, hard | [cpp](.cpp/0685.redundant-connection-ii.cpp) |
| [0686.Repeated String Match](.doc/0686.repeated-string-match.md) | Medium (34.95%) | string | [cpp](.cpp/0686.repeated-string-match.cpp) |
| [0687.Longest Univalue Path](.doc/0687.longest-univalue-path.md) | Medium (41.41%) | binary-tree, recursion | [cpp](.cpp/0687.longest-univalue-path.cpp) |
| [0688.Knight Probability in Chessboard](.doc/0688.knight-probability-