Q: When is the best time to plant a tree?
A: Ten years ago.
Q: And when is the next best time?
A: Today.
-
该仓库主要用于记录 LeetCode 题解
-
题解语言为 Swift、Java、JavaScript
-
LeetCode:https://leetcode.cn/u/yujiuqie
-
个人博客:https://jhfs.fun
-
常见数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;
-
常见算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
1. Two Sum | Swift | Java | [JavaScript] | |
137. Single Number II | Swift | Java | [JavaScript] | |
605. Can Place Flowers | Swift | Java | [JavaScript] | 贪心 |
896. Monotonic Array | Swift | Java | [JavaScript] | |
1060. Missing Element in Sorted Array | [Swift] | Java | [JavaScript] | |
1431. Kids With the Greatest Number of Candies | Swift | Java | [JavaScript] | |
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts | Swift | Java | [JavaScript] | 贪心 |
1921. Eliminate Maximum Number of Monsters | [Swift] | Java | [JavaScript] | |
2511. Maximum Enemy Forts That Can Be Captured | [Swift] | Java | [JavaScript] | |
2652. Sum Multiples | Swift | Java | [JavaScript] | |
2682. Find the Losers of the Circular Game | Swift | Java | JavaScript |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
43. Multiply Strings | Swift | Java | [JavaScript] | |
58. Length of Last Word | [Swift] | Java | [JavaScript] | |
833. Find And Replace in String | Swift | Java | JavaScript | |
1071. Greatest Common Divisor of Strings | [Swift] | Java | [JavaScript] | |
1768. Merge Strings Alternately | [Swift] | Java | [JavaScript] | |
2586. Count the Number of Vowel Strings in Range | Swift | Java | [JavaScript] | |
2609. Find the Longest Balanced Substring of a Binary String | Swift | Java | [JavaScript] | |
2678. Number of Senior Citizens | Swift | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
228. Summary Ranges | [Swift] | Java | [JavaScript] | |
849. Maximize Distance to Closest Person | [Swift] | Java | [JavaScript] | |
1679. Max Number of K-Sum Pairs | [Swift] | Java | [JavaScript] | |
2337. Move Pieces to Obtain a String | [Swift] | Java | [JavaScript] | |
2562. Find the Array Concatenation Value | Swift | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
643. Maximum Average Subarray I | [Swift] | Java | [JavaScript] | |
1456. Maximum Number of Vowels in a Substring of Given Length | Swift | [Java] | [JavaScript] | |
1493. Longest Subarray of 1's After Deleting One Element | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
187. Repeated DNA Sequences | Swift | Java | [JavaScript] | ❎ |
383. Ransom Note | Swift | Java | [JavaScript] | |
1207. Unique Number of Occurrences | [Swift] | Java | [JavaScript] | |
1488. Avoid Flood in The City | Swift | Java | [JavaScript] | 贪心 |
1657. Determine if Two Strings Are Close | [Swift] | Java | [JavaScript] | |
2605. Form Smallest Number From Two Digit Arrays | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
73. Set Matrix Zeroes | Swift | Java | [JavaScript] | |
2352. Equal Row and Column Pairs | [Swift] | Java | [JavaScript] | |
2596. Check Knight Tour Configuration | [Swift] | Java | [JavaScript] | DFS |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
56. Merge Intervals | [Swift] | Java | [JavaScript] | |
57. Insert Interval | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
2390. Removing Stars From a String | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
901. Online Stock Span | Swift | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
649. Dota2 Senate | Swift | Java | [JavaScript] | |
933. Number of Recent Calls | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
2095. Delete the Middle Node of a Linked List | [Swift] | Java | [JavaScript] | |
2130. Maximum Twin Sum of a Linked List | Swift | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
582. Kill Process | [Swift] | Java | [JavaScript] | |
1490. Clone N-ary Tree | [Swift] | Java | [JavaScript] | |
1506. Find Root of N-Ary Tree | [Swift] | Java | [JavaScript] | |
1522. Diameter of N-Ary Tree | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
117. Populating Next Right Pointers in Each Node II | Swift | Java | [JavaScript] | |
250. Count Univalue Subtrees | Swift | Java | JavaScript | |
314. Binary Tree Vertical Order Traversal | Swift | Java | JavaScript | |
366. Find Leaves of Binary Tree | [Swift] | Java | [JavaScript] | |
545. Boundary of Binary Tree | [Swift] | Java | [JavaScript] | |
549. Binary Tree Longest Consecutive Sequence | Swift | Java | JavaScript | |
617. Merge Two Binary Trees | Swift | Java | JavaScript | |
872. Leaf-Similar Trees | [Swift] | Java | [JavaScript] | DFS |
1161. Maximum Level Sum of a Binary Tree | Swift | Java | [JavaScript] | |
1120. Maximum Average Subtree | Swift | Java | JavaScript | |
1123. Lowest Common Ancestor of Deepest Leaves | [Swift] | Java | [JavaScript] | |
1372. Longest ZigZag Path in a Binary Tree | [Swift] | Java | [JavaScript] | DFS |
1448. Count Good Nodes in Binary Tree | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
255. Verify Preorder Sequence in Binary Search Tree | [Swift] | Java | [JavaScript] | |
272. Closest Binary Search Tree Value II | [Swift] | Java | [JavaScript] | |
333. Largest BST Subtree | [Swift] | Java | [JavaScript] | |
1214. Two Sum BSTs | [Swift] | Java | [JavaScript] | |
1373. Maximum Sum BST in Binary Tree | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
207. Course Schedule | [Swift] | Java | [JavaScript] | 有向图拓扑排序 |
210. Course Schedule II | [Swift] | Java | [JavaScript] | 有向图拓扑排序 |
277. Find the Celebrity | [Swift] | Java | [JavaScript] | |
1267. Count Servers that Communicate | [Swift] | Java | [JavaScript] | |
1462. Course Schedule IV | [Swift] | Java | [JavaScript] | 有向图拓扑排序 |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
694. Number of Distinct Islands | [Swift] | Java | [JavaScript] | |
841. Keys and Rooms | Swift | Java | [JavaScript] | |
1059. All Paths from Source Lead to Destination | [Swift] | Java | [JavaScript] | |
2698. Find the Punishment Number of an Integer | Swift | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
286. Walls and Gates | [Swift] | Java | [JavaScript] | |
490. The Maze | [Swift] | Java | [JavaScript] | |
505. The Maze II | [Swift] | Java | [JavaScript] | |
994. Rotting Oranges | Swift | Java | [JavaScript] | |
1136. Parallel Courses | [Swift] | Java | [JavaScript] | |
1197. Minimum Knight Moves | [Swift] | Java | [JavaScript] | |
1236. Web Crawler | [Swift] | Java | [JavaScript] | |
1926. Nearest Exit from Entrance in Maze | Swift | Java | [JavaScript] |
帮助解决 N 个元素的集合应用问题
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
200. Number of Islands | [Swift] | Java | [JavaScript] | |
305. Number of Islands II | [Swift] | Java | [JavaScript] | |
323. Number of Connected Components in an Undirected Graph | [Swift] | Java | [JavaScript] | |
1631. Path With Minimum Effort | [Swift] | Java | [JavaScript] | |
2316. Count Unreachable Pairs of Nodes in an Undirected Graph | Swift | Java | [JavaScript] | ❎ |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
[] | [Swift] | [Java] | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
247. Strobogrammatic Number II | [Swift] | Java | [JavaScript] | 递归 |
254. Factor Combinations | [Swift] | Java | [JavaScript] | 回溯 |
823. Binary Trees With Factors | [Swift] | Java | [JavaScript] | 递归 |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
[] | [Swift] | [Java] | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
[] | [Swift] | [Java] | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
74. Search a 2D Matrix | Swift | Java | [JavaScript] | |
374. Guess Number Higher or Lower | Swift | Java | [JavaScript] | |
1150. Check If a Number Is Majority Element in a Sorted Array | [Swift] | Java | [JavaScript] | |
1228. Missing Number In Arithmetic Progression | Swift | Java | JavaScript | |
1533. Find the Index of the Large Integer | [Swift] | Java | [JavaScript] | |
2560. House Robber IV | [Swift] | Java | [JavaScript] | |
2594. Minimum Time to Repair Cars | [Swift] | Java | [JavaScript] |
- 优先级队列(Priority Queue)是堆(Heap)的一种应用,但优先级队列同样可以用其他数据结构实现,比如说直接对数组插入实现,但是效率不高。
- 区别:在 remove 操作中,Priority Queue 的时间复杂度是 O(n),而 Heap 是 O(logn)。因为Priority Queue 需要找到这个数据,需要 O(n) 的时间,而 Heap 借助了 HashMap,所以只需要 O(1) 的时间就可以找到。
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
630. Course Schedule III | [Swift] | Java | [JavaScript] | |
1167. Minimum Cost to Connect Sticks | [Swift] | Java | [JavaScript] | |
2336. Smallest Number in Infinite Set | [Swift] | Java | [JavaScript] | |
2512. Reward Top K Students | [Swift] | Java | [JavaScript] | |
2530. Maximal Score After Applying K Operations | [Swift] | Java | [JavaScript] | |
2558. Take Gifts From the Richest Pile | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
136. Single Number | Swift | Java | [JavaScript] | |
190. Reverse Bits | Swift | Java | [JavaScript] | |
231. Power of Two | [Swift] | Java | [JavaScript] | |
260. Single Number III | Swift | Java | [JavaScript] | |
318. Maximum Product of Word Lengths | Swift | Java | [JavaScript] | |
389. Find the Difference | Swift | Java | [JavaScript] | |
1318. Minimum Flips to Make a OR b Equal to c | Swift | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
1134. Armstrong Number | Swift | Java | JavaScript | |
1180. Count Substrings with Only One Distinct Letter | Swift | Java | JavaScript | |
2578. Split With Minimum Sum | Swift | Java | [JavaScript] | 贪心 |
2582. Pass the Pillow | Swift | Java | [JavaScript] | |
2591. Distribute Money to Maximum Children | Swift | Java | JavaScript | |
2651. Calculate Delayed Arrival Time | Swift | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
1732. Find the Highest Altitude | [Swift] | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
146. LRU Cache | Swift | Java | [JavaScript] | |
271. Encode and Decode Strings | [Swift] | Java | [JavaScript] | |
281. Zigzag Iterator | [Swift] | Java | [JavaScript] | |
604. Design Compressed String Iterator | Swift | Java | JavaScript | ❎ |
1244. Design A Leaderboard | [Swift] | Java | [JavaScript] | |
1993. Operations on Tree | Swift | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
LCP 50. Gem Supply | [Swift] | Java | [JavaScript] | |
1222. Queens That Can Attack the King | [Swift] | Java | [JavaScript] | |
2525. Categorize Box According to Criteria | Swift | Java | [JavaScript] |
Problem | Swift | Java | JavaScript | Note |
---|---|---|---|---|
1333. Filter Restaurants by Vegan-Friendly, Price and Distance | Swift | Java | [JavaScript] |
- ❎ - 程序逻辑正确,但力扣提交错误。
- 🇧 - 表示
广度优先搜索
解法。 - 🇩 - 表示
深度优先搜索
解法。 - 🇷 - 表示
递归
解法。 🅱️ - 表示回溯
解法。
- 🇷递归(Recursion):递归是一种算法,在函数中调用自身的方法称为递归,是一种基于编程语言的实现方式。
- 🇩深度优先搜索(DFS):深度优先搜索是一种算法思想,也是一种访问所有节点的方式,通常已经访问过的节点不再访问,所有点仅访问一次。深度优先搜索可以使用递归方式实现,也可以不使用递归方式实现。与深度优搜索(DFS)对应的是广度优先搜索(BFS)。
🅱️ 回溯(Backtracking):回溯是一种算法思想,常用递归方式来实现,同时也是深度优先搜索的一种特例,与深度优先搜索的区别在于已经访问过的点可能再次访问,也可能存在没有被访问过的点(在满足一定条件后可以直接返回上一层)。
- PriorityQueue 需要自定义实现
====
- 数组:283、27、26、80、75、88、215、167、125、344、345、11、209、3、438、76
- 哈希表:349、350、242、202、290、205、415、1、15、18、16、454、49、447、149、219、217、220
- 链表:206、92、83、86、328、2、445、203、82、21、24、25、147、148、237、19、61、143、234
- 栈:20、150、71、144、94、145、341
- 队列:102、107、103、199、279、127、126
- 优先队列:347、23
- 二叉树:104、111、226、100、101、222、110、112、111、404、257、113、129、437、235、98、450、108、230、236
- 递归与回溯:17、93、131、46、47、77、39、40、216、78、90、401、79、200、130、417、51、52、37
- 动态规划:70、120、64、343、279、91、62、63、198、213、337、309、300、376、416、322、377、474、139、494
- 贪心:455、392、435、279