Skip to content

donnapersonal/solve_leetcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LeetCode

Solutions to LeetCode by Java, JS, and Python

Notess

Templates

LeetCode

数学/设计

No. Title Solution Tags Difficulty
0069 Sqrt(x) Java/JS/Python 数学、Brute Force 算法、二分查找 Easy
0146 LRU Cache Java/JS/Python 设计、数据结构 Medium
0202 Happy Number Java/JS/Python 数学、哈希表、双指针 Easy
0264 Ugly Number II Java/JS/Python 数学、双指针、动态规划 Medium
0295 Find Median from Data Stream Java/JS/Python 设计、数组、双指针、优先级队列 Hard
0355 Design Twitter Java/JS/Python 设计 Medium
0367 Valid Perfect Square Java/JS/Python 数学、Brute Force 算法、二分查找 Easy
0379 Design Phone Directory Java/JS/Python 设计、哈希 Medium
0460 LFU Cache Java/JS/Python 设计、数据结构 Hard
0729 My Calendar I Java/JS/Python 设计、二叉搜索树 Medium
0855 Exam Room Java/JS/Python 设计、优先级队列 Medium
0950 Reveal Cards In Increasing Order Java/JS/Python 设计、排序、队列 Medium
1429 First Unique Number Java/JS/Python 设计、哈希表、单调队列 Medium
1700 Number of Students Unable to Eat Lunch Java/JS/Python 设计、哈希表、单调队列 Easy

数组

No. Title Solution Tags Difficulty
/ Merge Two Order Array Java/JS/Python 数组、双指针 /
0001 Two Sum Java/JS/Python 数组、哈希表 Easy
0011 Container With Most Water Java/JS/Python 数组、双指针 Medium
0015 3Sum Java/JS/Python 数组、哈希表、双指针、排序 Medium
0018 4Sum Java/JS/Python 数组、双指针 Medium
0026 Remove Duplicates from Sorted Array Java/JS/Python 数组、双指针 Easy
0027 Remove Element Java/JS/Python 数组、双指针 Easy
0033 Search in Rotated Sorted Array Java/JS/Python 数组、二分查找 Medium
0034 Find First and Last Position of Element in Sorted Array Java/JS/Python 数组、二分查找 Medium
0035 Search Insert Position Java/JS/Python 数组、二分查找 Easy
0042 Trapping Rain Water Java/JS/Python 数组、栈、单调栈、双指针 Hard
0057 Insert Interval Java/JS/Python 数组s、扫描 Medium
0081 Search in Rotated Sorted Array II Java/JS/Python 数组、二分查找 Medium
0084 Largest Rectangle in Histogram Java/JS/Python 数组、双指针、栈、单调栈 Hard
0088 Search in Rotated Sorted Array II Java/JS/Python 数组、双指针 Medium
0121 Best Time to Buy and Sell Stock Java/JS/Python 数组、递推、DP Easy
0150 Evaluate Reverse Polish Notation Java/JS/Python 数组、数学、栈 Medium
0162 Find Peak Element Java/JS/Python 数组、二分查找 Medium
0169 Majority Element Java/JS/Python 数组、哈希表、Moore's Voting Algorithm Easy
0217 Contains Duplicate Java/JS/Python 数组、哈希表、排序 Easy
0209 Minimum Size Subarray Sum Java/JS/Python 数组、滑动窗口 Medium
0215 Kth Largest Element in an Array Java/JS/Python 数组、优先级队列(堆)、快速排序 Medium
0219 Contains Duplicate II Java/JS/Python 数组、哈希表、滑动窗口 Easy
0220 Contains Duplicate III Java/JS/Python 数组、二叉树搜索、桶排序、滑动窗口 Hard
0239 Sliding Window Maximum Java/JS/Python 数组、队列、单调队列、堆(优先级队列) Hard
0252 Meeting Rooms Java/JS/Python 数组、排序 Easy
0283 Move Zeroes Java/JS/Python 数组、双指针 Easy
0238 Product of Array Except Self Java/JS/Python 数组、前缀积 Medium
0303 Range Sum Query - Immutable Java/JS/Python 数组、前缀和 Easy
0325 Maximum Size Subarray Sum Equals k Java/JS/Python 数组、前缀和、哈希表 Medium
0347 Top K Frequent Elements Java/JS/Python 数组、哈希表、优先队列 Medium
0360 Sort Transformed Array Java/JS/Python 数组、数学、双指针 Medium
0349 Intersection of Two Arrays Java/JS/Python 数组、哈希表、双指针 Easy
0370 Range Addition Java/JS/Python 数组、差分数组 Medium
0373 Find K Pairs with Smallest Sums Java/JS/Python 数组、链表双指针、堆(优先队列) Medium
0380 Insert Delete GetRandom O(1) Java/JS/Python 数组、数学、设计、哈希表 Medium
0410 Split Array Largest Sum Java/JS/Python 数组、贪心、二分查找、DP、前缀和 Hard
0442 Find All Duplicates in an Array Java/JS/Python 数组、哈希表 Easy
0448 Find All Numbers Disappeared in an Array Java/JS/Python 数组、哈希表 Easy
0496 Next Greater Element I Java/JS/Python 数组、栈、单调栈 Easy
0503 Next Greater Element II Java/JS/Python 数组、栈、单调栈 Medium
0523 Continuous Subarray Sum Java/JS/Python 数组、哈希表、前缀和 Medium
0525 Contiguous Array Java/JS/Python 数组、哈希表、前缀和 Medium
0528 Random Pick with Weight Java/JS/Python 数组、前缀和、二分查找 Medium
0560 Subarray Sum Equals K Java/JS/Python 数组、哈希表、前缀和 Medium
0658 Find K Closest Elements Java/JS/Python 数组、双指针、二分查找 Medium
0692 Top K Frequent Words Java/JS/Python 数组、优先级队列 Medium
0703 Kth Largest Element in a Stream Easy Topics Java/JS/Python 数组、堆(优先级队列) Easy
0704 Binary Search Java/JS/Python 数组、二分查找 Easy
0710 Random Pick with Blacklist Java/JS/Python 数组、数学、随机算法 Hard
0713 Subarray Product Less Than K Java/JS/Python 数组、滑动窗口 Medium
0724 Find Pivot Index Java/JS/Python 数组、两次遍历、前缀和 Easy
0739 Daily Temperatures Java/JS/Python 数组、栈、单调栈 Medium
0852 Peak Index in a Mountain Array Java/JS/Python 数组、二分查找 Medium
0862 Shortest Subarray with Sum at Least K Java/JS/Python 数组、二分查找、前缀和、单调队列 Hard
0870 Advantage Shuffle Java/JS/Python 数组、双指针、排序 Medium
0875 Koko Eating Bananas Java/JS/Python 数组、二分查找 Medium
0918 Maximum Sum Circular Subarray Java/JS/Python 数组、环形数组、分治、动态规划、单调队列 Medium
0974 Subarray Sums Divisible by K Java/JS/Python 数组、哈希表、前缀和 Medium
0977 Squares of a Sorted Array Java/JS/Python 数组、双指针 Easy
1004 Max Consecutive Ones III Java/JS/Python 数组、滑动窗口 Medium
1011 Capacity To Ship Packages Within D Days Java/JS/Python 数组、二分查找 Medium
1094 Car Pooling Java/JS/Python 数组、差分数组 Medium
1109 Corporate Flight Bookings Java/JS/Python 数组、差分数组 Medium
1124 1124.Longest Well-Performing Interval Java/JS/Python 数组、哈希表、前缀和 Medium
1438 Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit Java/JS/Python 数组、单调队列、双指针、滑动窗口 Medium
1475 Final Prices With a Special Discount in a Shop Java/JS/Python 数组、单调栈 Easy
1658 Minimum Operations to Reduce X to Zero Java/JS/Python 数组、滑动窗口 Medium
1696 Jump Game VI Java/JS/Python 数组、单调队列、动态规划 Medium
1845 Seat Reservation Manager Java/JS/Python 数组、优先级队列 Medium
1944 Number of Visible People in a Queue Java/JS/Python 数组、单调栈 Hard

二维数组

No. Title Solution Tags Difficulty
0048 Rotate Image Java/JS/Python 数组、数学、矩阵 Medium
0054 Spiral Matrix Java/JS/Python 数组、数学、矩阵 Medium
0059 Spiral Matrix II Java/JS/Python 数组、数学、矩阵 Medium
0074 Search a 2D Matrix Java/JS/Python 数组、矩阵、二分查找 Medium
0240 Search a 2D Matrix II Java/JS/Python 数组、矩阵、二分查找、双指针 Medium
0304 Range Sum Query 2D - Immutable Java/JS/Python 数组、数学、矩阵、前缀和 Medium
0378 Kth Smallest Element in a Sorted Matrix Java/JS/Python 数组、矩阵、链表双指针、二分查找、堆(优先队列) Medium
0519 Random Flip Matrix Java/JS/Python 数组、数学、哈希表 Medium
1260 Shift 2D Grid Java/JS/Python 数组、矩阵、双指针 Easy
1314 Matrix Block Sum Java/JS/Python 数组、数学、矩阵、前缀和 Medium

字符串

No. Title Solution Tags Difficulty
/ Replace Number Java/JS/Python 字符串、双指针 /
0003 Longest Substring Without Repeating Characters Java/JS/Python 字符串、哈希表、滑动窗口 Medium
0005 Longest Palindromic Substring Java/JS/Python 字符串、双指针、滑动窗口、DP、Manacher's algorithm Medium
0020 Valid Parentheses Java/JS/Python 字符串、栈 Easy
0028 Find the Index of the First Occurrence in a String Java/JS/Python 字符串、滑动窗口、双指针、字符串匹配算法(BF/BM/KMP/RK/Horspool/Sunday) Easy
0049 Group Anagrams Java/JS/Python 字符串、哈希表、排序 Medium
0076 Minimum Window Substring Java/JS/Python 字符串、哈希表、滑动窗口 Hard
0151 Reverse Words in a String Java/JS/Python 字符串、双指针 Medium
0187 Repeated DNA Sequences Java/JS/Python 字符串、RK 算法 Medium
0224 Basic Calculator Java/JS/Python 字符串、栈 Hard
0227 Basic Calculator II Java/JS/Python 字符串、栈 Medium
0242 Valid Anagram Java/JS/Python 字符串、哈希表 Easy
0316 Remove Duplicate Letters Java/JS/Python 字符串、栈、贪心 Medium
0340 Longest Substring with At Most K Distinct Characters Java/JS/Python 字符串、哈希表、滑动窗口 Medium
0344 Reverse String Java/JS/Python 字符串、栈、递归、双指针 Easy
0383 Ransom Note Java/JS/Python 字符串、哈希表 Easy
0387 First Unique Character in a String Java/JS/Python 字符串、哈希表 Easy
0388 Longest Absolute File Path Java/JS/Python 字符串、栈 Medium
0389 Find the Difference Java/JS/Python 字符串、哈希表、位运算 Easy
0395 Longest Substring with At Least K Repeating Characters Java/JS/Python 字符串、哈希表、分治、滑动窗口 Medium
0402 Remove K Digits Java/JS/Python 字符串、栈、单调栈 Medium
0424 Longest Repeating Character Replacement Java/JS/Python 字符串、哈希表、滑动窗口 Medium
0438 Find All Anagrams in a String Java/JS/Python 字符串、哈希表、滑动窗口 Medium
0451 Sort Characters By Frequency Java/JS/Python 字符串、优先队列(二叉堆) Medium
0459 Repeated Substring Pattern Java/JS/Python 字符串、移动匹配、KMP 算法 Easy
0541 Reverse String II Java/JS/Python 字符串、双指针、递归 Easy
0567 Permutation in String Java/JS/Python 字符串、哈希表、滑动窗口 Medium
0921 Minimum Add to Make Parentheses Valid Java/JS/Python 字符串、栈、贪心 Medium
1047 Remove All Adjacent Duplicates In String Java/JS/Python 字符串、栈、双指针 Easy
1081 Smallest Subsequence of Distinct Characters Java/JS/Python 字符串、栈、贪心 Medium
1541 Minimum Insertions to Balance a Parentheses String Java/JS/Python 字符串、栈、贪心 Medium

链表

No. Title Solution Tags Difficulty
0019 Remove Nth Node From End of List Java/JS/Python 链表、双指针、递归 Medium
0021 Merge Two Sorted Lists Java/JS/Python 链表、双指针 Easy
0023 Merge k Sorted Lists Java/JS/Python 链表、双指针、分治、堆(优先队列)、归并排序 Hard
0024 Swap Nodes in Pairs Java/JS/Python 链表、双指针、递归、迭代 Medium
0025 Reverse Nodes in k-Group Java/JS/Python 链表、递归、迭代 Hard
0061 Rotate List Java/JS/Python 链表、双指针 Medium
0082 Remove Duplicates from Sorted List II Java/JS/Python 链表、双指针 Medium
0083 Remove Duplicates from Sorted List Java/JS/Python 链表、双指针 Easy
0086 Partition List Java/JS/Python 链表、双指针 Medium
0092 Reverse Linked List II Java/JS/Python 链表、双指针、递归 Medium
0138 Copy List with Random Pointer Java/JS/Python 链表、哈希表、迭代、递归 Medium
0141 Linked List Cycle Java/JS/Python 链表、哈希表、双指针 Easy
0142 Linked List Cycle II Java/JS/Python 链表、双指针 Medium
0143 Reorder List Java/JS/Python 链表、栈、双指针 Medium
0160 Intersection of Two Linked Lists Java/JS/Python 链表、双指针 Easy
0206 Reverse Linked List Java/JS/Python 链表、多指针、递归 Easy
0234 Palindrome Linked List Java/JS/Python 链表、双指针 Easy
0707 Design Linked List Java/JS/Python 链表、设计 Medium
0876 Middle of the Linked List Java/JS/Python 链表、双指针 Medium
1019 Next Greater Node In Linked List Java/JS/Python 链表、单调栈 Easy
1836 Remove Duplicates From an Unsorted Linked List Java/JS/Python 链表、链表双指针 Medium

栈/队列

No. Title Solution Tags Difficulty
0155 Min Stack Java/JS/Python 设计、栈 Medium
0225 Implement Stack using Queues Java/JS/Python 设计、栈、队列 Easy
0232 Implement Queue using Stacks Java/JS/Python 设计、栈、队列 Easy
0346 Moving Average from Data Stream Java/JS/Python 设计、队列 Easy
0362 Design Hit Counter Java/JS/Python 设计、队列 Medium
0622 Design Circular Queue Java/JS/Python 设计、队列、数组、链表 Medium
0641 Design Circular Deque Java/JS/Python 设计、队列、数组、链表 Medium
0895 Maximum Frequency Stack Java/JS/Python 设计、栈、模拟 Hard
0901 Online Stock Span Java/JS/Python 设计、栈、单调栈 Medium
0933 Number of Recent Calls Java/JS/Python 设计、队列 Easy
1670 Design Front Middle Back Queue Java/JS/Python 设计、队列 Medium

二叉树

No. Title Solution Tags Difficulty
0094 Binary Tree Inorder Traversal Java/JS/Python 二叉树、DFS、迭代 Easy
0095 Unique Binary Search Trees II Java/JS/Python 二叉树、DFS Medium
0096 Unique Binary Search Trees Java/JS/Python 二叉树、DFS、动态规划 Medium
0098 Validate Binary Search Tree Java/JS/Python 二叉树、递归、迭代 Medium
0101 Symmetric Tree Java/JS/Python 二叉树、DFS、迭代 Easy
0102 Binary Tree Level Order Traversal Java/JS/Python 二叉树、BFS Medium
0104 Maximum Depth of Binary Tree Java/JS/Python 二叉树、BFS、动态规划、回溯算法 Easy
0105 Construct Binary Tree from Preorder and Inorder Traversal Java/JS/Python 二叉树、递归 Medium
0106 Construct Binary Tree from Inorder and Postorder Traversal Java/JS/Python 二叉树、递归 Medium
0107 Binary Tree Level Order Traversal II Java/JS/Python 二叉树、BFS Medium
0108 Convert Sorted Array to Binary Search Tree Java/JS/Python 二叉树、递归、迭代 Easy
0110 Balanced Binary Tree Java/JS/Python 二叉树、DFS、迭代 Easy
0111 Minimum Depth of Binary Tree Java/JS/Python 二叉树、BFS、DFS Easy
0112 Path Sum Java/JS/Python 二叉树、DFS、迭代 Easy
0116 Populating Next Right Pointers in Each Node Java/JS/Python 二叉树、BFS、DFS Medium
0117 Populating Next Right Pointers in Each Node II Java/JS/Python 二叉树、BFS Medium
0144 Binary Tree Preorder Traversal Java/JS/Python 二叉树、DFS、迭代 Easy
0145 Binary Tree Postorder Traversal Java/JS/Python 二叉树、DFS、迭代 Easy
0199 Binary Tree Right Side View Java/JS/Python 二叉树、BFS、DFS Medium
0222 Count Complete Tree Nodes Java/JS/Python 二叉树、DFS、迭代、利用完全二叉树特性 Medium
0226 Invert Binary Tree Java/JS/Python 二叉树、BFS、DFS Easy
0230 Kth Smallest Element in a BST Java/JS/Python 二叉树、递归、迭代 Medium
0235 Lowest Common Ancestor of a Binary Search Tree Java/JS/Python 二叉树、递归、迭代 Medium
0236 Lowest Common Ancestor of a Binary Tree Java/JS/Python 二叉树、递归、迭代 Medium
0257 Binary Tree Paths Java/JS/Python 二叉树、DFS、迭代 Easy
0297 Serialize and Deserialize Binary Tree Java/JS/Python 二叉树、DFS、层序遍历 Hard
0341 Flatten Nested List Iterator Java/JS/Python 二叉树、设计 Medium
0404 Sum of Left Leaves Java/JS/Python 二叉树、DFS、迭代 Easy
0543 Diameter of Binary Tree Java/JS/Python 二叉树、DFS Easy
0637 Average of Levels in Binary Tree Java/JS/Python 二叉树、BFS Easy
0429 N-ary Tree Level Order Traversal Java/JS/Python 二叉树、BFS Medium
0450 Delete Node in a BST Java/JS/Python 二叉树、递归、迭代 Medium
0501 Find Mode in Binary Search Tree Java/JS/Python 二叉树、递归、迭代 Easy
0513 Find Bottom Left Tree Value Java/JS/Python 二叉树、DFS、BFS Medium
0515 Find Largest Value in Each Tree Row Java/JS/Python 二叉树、BFS、DFS Medium
0530 Minimum Absolute Difference in BST Java/JS/Python 二叉树、递归、迭代 Easy
0538 Convert BST to Greater Tree Java/JS/Python 二叉树、递归、迭代 Medium
0617 Merge Two Binary Trees Java/JS/Python 二叉树、递归、迭代 Easy
0652 Find Duplicate Subtrees Java/JS/Python 二叉树、递归 Medium
0654 Maximum Binary Tree Java/JS/Python 二叉树、递归 Medium
0669 Trim a Binary Search Tree Java/JS/Python 二叉树、递归、迭代 Medium
0700 Search in a Binary Search Tree Java/JS/Python 二叉树、递归、迭代 Easy
0701 Insert into a Binary Search Tree Java/JS/Python 二叉树、递归、迭代 Medium
0889 Construct Binary Tree from Preorder and Postorder Traversal Java/JS/Python 二叉树、递归 Medium
1373 Maximum Sum BST in Binary Tree Java/JS/Python 二叉树、递归 Hard
1644 Lowest Common Ancestor of a Binary Tree II Java/JS/Python 二叉树、递归 Medium
1650 Lowest Common Ancestor of a Binary Tree III Java/JS/Python 二叉树、递归 Medium

BFS/DFS

No. Title Solution Tags Difficulty
0752 Open the Lock Java/JS/Python BFS Medium
0773 Sliding Puzzle Java/JS/Python BFS Hard

回溯

No. Title Solution Tags Difficulty
0017 Letter Combinations of a Phone Number Java/JS/Python 组合、回溯、哈希 Medium
0037 Sudoku Solver Java/JS/Python 数独、回溯、哈希 Hard
0039 Combination Sum Java/JS/Python 组合、回溯 Medium
0040 Combination Sum II Java/JS/Python 组合、回溯 Medium
0046 Permutations Java/JS/Python 排列、回溯 Medium
0047 Permutations II Java/JS/Python 排列、回溯 Medium
0051 N-Queens Java/JS/Python 棋盘、回溯 Hard
0052 N-Queens II Java/JS/Python 棋盘、回溯 Hard
0077 Combinations Java/JS/Python 组合、回溯 Medium
0078 Subsets Java/JS/Python 子集、回溯 Medium
0090 Subsets II Java/JS/Python 子集、回溯 Medium
0093 Restore IP Addresses Java/JS/Python 分割、回溯 Medium
0131 Palindrome Partitioning Java/JS/Python 分割、回溯 Medium
0140 Word Break II Java/JS/Python 回溯 Hard
0216 Combination Sum III Java/JS/Python 组合、回溯 Medium
0332 Reconstruct Itinerary Java/JS/Python 回溯、图论 Hard
0491 Non-decreasing Subsequences Java/JS/Python 排列组合,回溯 Medium

动态规划

No. Title Solution Tags Difficulty
0053 Maximum Subarray Java/JS/Python 动态规划、分治 Medium
0072 Edit Distance Java/JS/Python 动态规划 Hard
0139 Word Break Java/JS/Python 动态规划 Medium
0300 Longest Increasing Subsequence Java/JS/Python 动态规划、二分查找 Medium
0322 Coin Change Java/JS/Python 动态规划、BFS Medium
0509 Fibonacci Number Java/JS/Python 动态规划、递归 Medium
0516 Longest Palindromic Subsequence Java/JS/Python 动态规划 Medium
0583 Delete Operation for Two Strings Java/JS/Python 动态规划 Medium
0712 Minimum ASCII Delete Sum for Two Strings Java/JS/Python 动态规划 Medium
1143 Longest Common Subsequence Java/JS/Python 动态规划 Medium