Skip to content

wangAlpha/leetcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

哈希表

  • 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)

BST

  • !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)

Trie

  • 208. Implement Trie (Prefix Tree) (Medium)
  • 677. Map Sum Pairs (Medium)

STL

  • 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) 需要利用其它数据结构方便统计当前的字符状态。

搜索

BFS

  • 1091. Shortest Path in Binary Matrix(Medium)
  • 279. Perfect Squares (Medium)
    • 和硬币问题是一样的,不过不过现在硬币需要实时求出来,而且也求不是总数
  • 127. Word Ladder (Medium)
  • 547. Friend Circles (Medium)

DFS

  • 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)

Backtracking

  • 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)

About

LeetCode Problems' Solutions

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published