Skip to content

yujiuqie/LeetCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LeetCode


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 树;

  • 常见算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

刷题记录

数组(Array)

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

字符串(String)

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]

双指针(Two Pointers)

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]

滑动窗口(Sliding Window)

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]

哈希表(Hash)

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]

矩阵(Matrix)

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

区间(Intervals)

Problem Swift Java JavaScript Note
56. Merge Intervals [Swift] Java [JavaScript]
57. Insert Interval [Swift] Java [JavaScript]

栈(Stack)

Problem Swift Java JavaScript Note
2390. Removing Stars From a String [Swift] Java [JavaScript]

单调栈(Monotonic Stack)

Problem Swift Java JavaScript Note
901. Online Stock Span Swift Java [JavaScript]

队列(Queue)

Problem Swift Java JavaScript Note
649. Dota2 Senate Swift Java [JavaScript]
933. Number of Recent Calls [Swift] Java [JavaScript]

链表(Linked List)

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]

树(Tree General)

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]

二叉树(Binary Tree General)

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]

二叉搜索树(Binary Search Tree)

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]

图(Graph)

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] 有向图拓扑排序

图-深度优先搜索(Graph-DFS)

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]

图-广度优先搜索(Graph-BFS)

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]

图-并查集(Graph-UFDS)

帮助解决 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]

字典树(Trie)

Problem Swift Java JavaScript Note
[] [Swift] [Java] [JavaScript]

回溯(Backtracking)

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] 递归

分治(Divide And Conquer)

Problem Swift Java JavaScript Note
[] [Swift] [Java] [JavaScript]

Kadane 算法(Kadane Algorithm)

Problem Swift Java JavaScript Note
[] [Swift] [Java] [JavaScript]

二分查找(Binary Search)

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]

堆(Heap)/优先级队列(Priority Queue)

  • 优先级队列(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]

位运算(Bit Manipulation)

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]

数学(Math)

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]

动态规划(DP)

Problem Swift Java JavaScript Note
53. Maximum Subarray Swift Java [JavaScript]
121. Best Time to Buy and Sell Stock Swift Java [JavaScript]
122. Best Time to Buy and Sell Stock II Swift Java [JavaScript]
123. Best Time to Buy and Sell Stock III Swift Java [JavaScript]
198. House Robber [Swift] Java [JavaScript]
213. House Robber II [Swift] Java [JavaScript]
256. Paint House [Swift] Java [JavaScript]
276. Paint Fence [Swift] Java [JavaScript]
300. Longest Increasing Subsequence Swift Java [JavaScript]
309. Best Time to Buy and Sell Stock with Cooldown Swift Java [JavaScript]
337. House Robber III Swift Java [JavaScript]
646. Maximum Length of Pair Chain Swift Java [JavaScript]
651. 4 Keys Keyboard [Swift] Java [JavaScript]
673. Number of Longest Increasing Subsequence Swift Java [JavaScript]
712. Minimum ASCII Delete Sum for Two Strings Swift Java [JavaScript]
714. Best Time to Buy and Sell Stock with Transaction Fee Swift Java [JavaScript]
740. Delete and Earn Swift Java [JavaScript]
790. Domino and Tromino Tiling Swift Java [JavaScript]
1218. Longest Arithmetic Subsequence of Given Difference Swift Java [JavaScript]
1388. Pizza With 3n Slices [Swift] Java [JavaScript]
1402. Reducing Dishes Swift Java [JavaScript]
2240. Number of Ways to Buy Pens and Pencils [Swift] Java [JavaScript]

前缀和(PrefixSum)

Problem Swift Java JavaScript Note
1732. Find the Highest Altitude [Swift] Java [JavaScript]

设计(Design)

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]

模拟(Simulation)

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]

排序(Sorting)

Problem Swift Java JavaScript Note
1333. Filter Restaurants by Vegan-Friendly, Price and Distance Swift Java [JavaScript]

笔记备忘

  • ❎ - 程序逻辑正确,但力扣提交错误。
  • 🇧 - 表示广度优先搜索解法。
  • 🇩 - 表示深度优先搜索解法。
  • 🇷 - 表示递归解法。
  • 🅱️ - 表示回溯解法。

递归、深度优先搜索、回溯区别

  • 🇷递归(Recursion):递归是一种算法,在函数中调用自身的方法称为递归,是一种基于编程语言的实现方式。
  • 🇩深度优先搜索(DFS):深度优先搜索是一种算法思想,也是一种访问所有节点的方式,通常已经访问过的节点不再访问,所有点仅访问一次。深度优先搜索可以使用递归方式实现,也可以不使用递归方式实现。与深度优搜索(DFS)对应的是广度优先搜索(BFS)。
  • 🅱️回溯(Backtracking):回溯是一种算法思想,常用递归方式来实现,同时也是深度优先搜索的一种特例,与深度优先搜索的区别在于已经访问过的点可能再次访问,也可能存在没有被访问过的点(在满足一定条件后可以直接返回上一层)。

Swift 备注

  • PriorityQueue 需要自定义实现

====

优质算法解析

算法题组合

组合-1(132题)

  • 数组: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

参考链接

About

Leetcode 刷题笔记,提供 Swift、Java、JavaScript 解法参考

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published