- 1.
Two Sum (Easy) - 217.
Contains Duplicate (Easy) - 128.
Longest Consecutive Sequence (Hard) - 149. Max Points on a Line (Hard)
- 332. Reconstruct Itinerary (Medium)
- 304. Range Sum Query 2D - Immutable (Medium)
- 560. Subarray Sum Equals K (Medium)
- 503.
Next Greater Element II (Medium) Daily Temperature 的变种题。 - 697.
(Easy) 如何对数组进行预处理才能正确并快速地计算子数组的长度? - 594.
Longest Harmonious Subsequence (Easy) 最长连续序列的变种题。 哈希or排序双指针 - 287.
Find the Duplicate Number (Medium) 寻找丢失数字的变种题。除了标负位置,你还有没有其它算法可以解决这个问题?- Floy找圈
- 313. Super Ugly Number (Medium) 尝试使用优先队列解决这一问题。
- 870. Advantage Shuffle (Medium) 如果我们需要比较大小关系,而且同一数字可能出现多次,那么应该用什么数据结构呢?
- 307. Range Sum Query - Mutable (Medium) 前缀和的变种题。好吧我承认,这道题可能有些超纲,你或许需要搜索一下什么是线段树。
- 160.
Intersection of Two Linked Lists (Easy) Goolge - 206.
Reverse Linked List (Easy) - 21.
Merge Two Sorted Lists (Easy) - 83.
Remove Duplicates from Sorted List (Easy) - !19.
Remove Nth Node From End of List (Medium) - 24.
Swap Nodes in Pairs (Medium) - 725.
Split Linked List in Parts(Medium) - 328.
Odd Even Linked List (Medium) - 215.
Kth Largest Element in an Array (Medium) - 148.
Sort List (Medium) 利用快慢指针找到链表中点后,可以对链表进行归并排序
- 232.
Implement Queue using Stacks (Easy) - 225.
Implement Stack using Queues (Easy) - 155.
Min Stack (Easy) - 20.
Valid Parentheses (Easy) - 739 .
Daily Temperatures (Medium) - 23 .
Merge k Sorted Lists (Hard) - 218. The Skyline Problem (Hard)
- 239. Sliding Window Maximum (Hard)
- 104.
Maximum Depth of Binary Tree (Easy) - 110.
Balanced Binary Tree (Easy) - !543. Diameter of Binary Tree (Easy)
- 111.
二叉树的最小深度 - [xx] 617.
Merge Two Binary Trees (Easy) - 560. Subarray Sum Equals K 前缀法
- !437. Path Sum III (Easy)
- [xx] 572.
Subtree of Another Tree (Easy) - ! 111. Minimum Depth of Binary Tree (Easy)
- 687. Longest Univalue Path (Easy)
- 337.
House Robber III (Medium) - 671. Second Minimum Node In a Binary Tree (Easy)
- 1110. Delete Nodes And Return Forest (Medium)
- 637.
Average of Levels in Binary Tree (Easy) - 513.
Find Bottom Left Tree Value (Easy)
- 94.
Binary Tree Inorder Traversal (Medium) - 144.
Binary Tree Preorder Traversal (Medium) - 145.
Binary Tree Postorder Traversal (Medium) - 105.
Construct Binary Tree from Preorder and Inorder Traversal (Medium)- 注意计算前序子树的大小的时候,要把第一个节点考虑进去
- 99. Recover Binary Search Tree (Hard)
- !669.
Trim a Binary Search Tree (Easy)搜索树的定义 - 230.
kth Smallest Element in a BST (Medium)迭代遍历 - 235.
Lowest Common Ancestor of a Binary Search Tree (Easy)搜索树 - 236.
Lowest Common Ancestor of a Binary Tree (Medium) - 108.
Convert Sorted Array to Binary Search Tree (Easy) - 109.
Convert Sorted List to Binary Search Tree (Medium)找中位数 - 653. Two Sum IV - Input is a BST (Easy)
- 530.
Minimum Absolute Difference in BST (Easy) - 501.
Find Mode in Binary Search Tree (Easy)
- 208. Implement Trie (Prefix Tree) (Medium)
- 677. Map Sum Pairs (Medium)
- 146.
LRU Cache (Medium) - 404.
Sum of Left Leaves (Easy)怎么判断一个节点是不是左节点呢?一种可行的方法是,在辅函数里多传一个参数,表示当前节点是不是父节点的左节点。 - 538.
Convert BST to Greater Tree (Easy)尝试利用某种遍历方式来解决此题,每个节点只需遍历一次。 - 889. Construct Binary Tree from Preorder and Postorder Traversal (Medium) 给定任意两种遍历结果,我们都可以重建树的结构。
- 106. Construct Binary Tree from Inorder and Postorder Traversal (Medium) 给定任意两种遍历结果,我们都可以重建树的结构。
- 897. Increasing Order Search Tree (Easy) 把 BST 压成一个链表,务必考虑清楚指针操作的顺序,否则可能会出现环路。
- !450. Delete Node in a BST (Medium) 当寻找到待删节点时,你可以分情况考虑——当前节点是叶节点、只有一个子节点和有两个子节点。建议同时回收内存。
- 380. Insert Delete GetRandom O(1) (Medium) 设计一个插入、删除和随机取值均为 O(1) 时间复杂度的数据结构。
- [] 432. All O‘one Data Structure (Hard) 设计一个 increaseKey,decreaseKey,getMaxKey,getMinKey 均为 O(1) 时间复杂度的数据结构。
- 633. Sum of Square Numbers (Easy)
- 345. Reverse Vowels of a String (Easy)
- 680. Valid Palindrome II (Easy)
- 141.
Linked List Cycle (Easy) - 524. Longest Word in Dictionary through Deleting (Medium) 归并两个有序数组的变形题 (双指针)
- 88. Merge Sorted Array (Easy)
- 142. Linked List Cycle II (Medium) 算术题
- 76. Minimum Window Substring (Hard)
- 4. Longest Substring with At Most K Distinct Characters (Hard) 需要利用其它数据结构方便统计当前的字符状态。
- 1091. Shortest Path in Binary Matrix(Medium)
- 279. Perfect Squares (Medium)
- 和硬币问题是一样的,不过不过现在硬币需要实时求出来,而且也求不是总数
- 127. Word Ladder (Medium)
- 547. Friend Circles (Medium)
- 695. Max Area of Island (Medium)
- 200. Number of Islands (Medium)
- 547. Friend Circles (Medium)
- 130. Surrounded Regions (Medium)
- 417. Pacific Atlantic Water Flow (Medium)
- 17. Letter Combinations of a Phone Number (Medium)
- 93. Restore IP Addresses(Medium)
- 79. Word Search (Medium)
- 46. Permutations (Medium)
- 47. Permutations II (Medium)
- 77. Combinations (Medium)
- 39. Combination Sum (Medium)
- 40. Combination Sum II (Medium)
- 216. Combination Sum III (Medium)
- 78.
Subsets (Medium) - 90. Subsets II (Medium)
- 131. Palindrome Partitioning (Medium)
- 37. Sudoku Solver (Hard)
- !51. N-Queens (Hard)
- 934. Shortest Bridge (Medium)
- 126. Word Ladder II (Hard)
- 2.
Binary Tree Paths (Easy) 输出二叉树中所有从根到叶子的路径,回溯法使用与否有什么区别?进阶难度 - 3. Permutations II (Medium) 排列题的 follow-up,如何处理重复元素?
- 4. Combination Sum II (Medium) 组合题的 follow-up,如何处理重复元素?
- 6.
Minimum Height Trees (Medium)如何将这道题转为搜索类型题?是使用深度优先还是广度优先呢?
- 455.
Assign Cookies (Easy) (Google) - 435.
Non-overlapping Intervals (Medium) (Google) - 452. Minimum Number of Arrows to Burst Balloons (Medium)
- 406. Queue Reconstruction by Height(Medium)
- 121. Best Time to Buy and Sell Stock (Easy) 历史最低点
- 122. Best Time to Buy and Sell Stock II (Easy)
- 392. Is Subsequence (Medium)
- 665. Non-decreasing Array (Easy)
- 53. Maximum Subarray (Easy)
- 135. Candy (Hard)
- 605. Can Place Flowers (Easy)
- 763. Partition Labels (Medium)
- 242.
Valid Anagram (Easy) - 409. Longest Palindrome (Easy)
- 205. Isomorphic Strings (Easy)
- 647.
Palindromic Substrings (Medium) - 9. Palindrome Number (Easy)
- 696. Count Binary Substrings (Easy)
- 计数法
- 1. Basic Calculator II (Medium)
- 2. Implement strStr() (Easy)
- 3.
Longest Substring Without Repeating Characters (Medium) 计算最长无重复子字符串,同样的,可以利用其它数据结构进行辅助统计。 - 4. Basic Calculator III (Hard) 题目 227 的 follow-up,十分推荐练习。
- 5. Longest Palindromic Substring (Medium) Manacher’s Algorithm,它可以在 O(n)
- 785. Is Graph Bipartite? (Medium)
- 1059. All Paths from Source Lead to Destination (Medium) 虽然使用深度优先搜索可以解决大部分的图遍历问题,但是注意判断是否陷入了环路。
- 1135. Connecting Cities With Minimum Cost (Medium)
- 882. Reachable Nodes In Subdivided Graph (Hard)
- 207. Course Schedule (Medium)
- 210. Course Schedule II (Medium)
- 684. Redundant Connection (Medium)
- !69. Sqrt(x) (Easy)
- 744. Find Smallest Letter Greater Than Target (Easy)
- 278.
First Bad Version (Easy)- 找到坏版本后检查一下
- 153. Find Minimum in Rotated Sorted Array (Medium)
- !34. Find First and Last Position of Element in Sorted Array
- 81. Search in Rotated Sorted Array II (Medium)
- 154. Find Minimum in Rotated Sorted Array II (Medium) 旋转数组的变形题之一。
- 540. Single Element in a Sorted Array (Medium) 在出现独立数之前和之后,奇偶位数的值发生了什么变化?
- 4. Median of Two Sorted Arrays (Hard) 需要对两个数组同时进行二分搜索。
- 241. Different Ways to Add Parentheses (Medium)
- 95. Unique Binary Search Trees II (Medium)
- 204. Count Primes (Easy)
- 504.
Base 7 (Easy) - 405. Convert a Number to Hexadecimal (Easy)
- 168. Excel Sheet Column Title (Easy)
- 172. Factorial Trailing Zeroes (Easy)
- 67.
Add Binary (Easy) - 415.
Add Strings (Easy)
- 462. Minimum Moves to Equal Array Elements II (Medium) 这道题是笔者最喜欢的 LeetCode 题目之一,需要先推理出怎么样移动是最优的,再考虑如何进行移动。你或许需要一些前些章节讲过的算法。
- 169. Majority Element (Easy) 如果想不出简单的解决方法,搜索一下 Boyer-Moore Majority Vote 算法吧。
- 367. Valid Perfect Square (Easy)
- 326. Power of Three (Easy)
- 238. Product of Array Except Self (Medium)
- 628. Maximum Product of Three Numbers (Easy)
- 384. Shuffle an Array (Medium)
- 528. Random Pick with Weight (Medium)
- 382.
Linked List Random Node (Medium) - 5. Implement Rand10() Using Rand7() (Medium) 如何用一个随机数生成器生成另一个随机数生成器?你可能需要利用原来的生成器多次。
- 6. Happy Number (Easy) 你可以简单的用一个 while 循环解决这道题,但是有没有更好的解决办法?如果我们把每个数字想象成一个节点,是否可以转化为环路检测?
- 1.
Hamming Distance (Easy) - 136.
Single Number (Easy) - 268.
Missing Number (Easy) - !260. Single Number III (Medium)
- 190.
Reverse Bits (Easy) - 231. Power of Two (Easy)
- 342. Power of Four (Easy)
- 693. Binary Number with Alternating Bits (Easy)
- 476. Number Complement (Easy)
- 371. Sum of Two Integers (Easy)
- !318. Maximum Product of Word Lengths (Medium)
- !338. Counting Bits (Medium)
- 283. Move Zeroes (Easy)
- 566. Reshape the Matrix (Easy)
- 485. Max Consecutive Ones (Easy)
- 240. Search a 2D Matrix II (Medium)
- 378. Kth Smallest Element in a Sorted Matrix ((Medium))
- 645. Set Mismatch (Easy)
- 667. Beautiful Arrangement II (Medium)
- 766. Toeplitz Matrix (Easy)
- 565. Array Nesting (Medium)
- 769. Max Chunks To Make Sorted (Medium)
- 448. Find All Numbers Disappeared in an Array (Easy)
- 48. Rotate Image (Medium)
- 215. Kth Largest Element in an Array
- 75. Sort Colors (Medium)
- 347.Top K Frequent Elements (Medium)
- 451. Sort Characters By Frequency (Medium)
- 70. Climbing Stairs (Easy) 动态规划
- 198.
House Robber (Easy) - 213.
House Robber II (Medium) - 542. 01 Matrix (Medium)
- 221. Maximal Square (Medium)
- 53. Maximum Subarray (Easy) 经典的一维动态规划题目,试着把一维空间优化为常量吧。
- 343. Integer Break (Medium) 分割类型题,先尝试用动态规划求解,再思考是否有更简单的解法。
- 583. Delete Operation for Two Strings (Medium) 最长公共子序列的变种题。
- 646.
Maximum Length of Pair Chain (Medium) 最长递增子序列的变种题,同样的,尝试用二分进行加速。 - 376. Wiggle Subsequence (Medium) 最长摆动子序列,通项公式比较特殊,需要仔细思考。
- 64. Minimum Path Sum (Medium)
- 62. Unique Paths (Medium)
- 303. Range Sum Query - Immutable (Easy)
- 413. Arithmetic Slices (Medium)
- 279. Perfect Squares(Medium)
- 91. Decode Ways (Medium)
- 300.
Longest Increasing Subsequence (Medium) - 376. Wiggle Subsequence (Medium)
- 1143. Longest Common Subsequence
- 416.
Partition Equal Subset Sum (Medium)背包问题 - 494. Target Sum (Medium) 注意排查输入的数据问题
- 474. Ones and Zeroes (Medium)
- 322. !Coin Change (Medium)
- 518. !Coin Change 2 (Medium) 本质和爬楼梯是一样的 problem(i) = sum(problem(i-j)), j = 1, 2, 5
- 选硬币是组合问题,爬楼梯是排列问题,这对子问题有区别
- 139. Word Break (Medium)
- 377. Combination Sum IV (Medium)
- 309. Best Time to Buy and Sell Stock with Cooldown(Medium)
- 714. Best Time to Buy and Sell Stock with Transaction Fee (Medium)
- 123. Best Time to Buy and Sell Stock III (Hard)
- 188. Best Time to Buy and Sell Stock IV (Hard) Goolge
- 72. Edit Distance (Hard)
- 650. 2 Keys Keyboard (Medium)
- 10. Regular Expression Matching (Hard)