Git Product home page Git Product logo

leet-code's Introduction

home

Disclaimer: 这里的题目跟具体的面试毫无关系, 也没有任何指向性; 这些题目是我当年在努力刷题的过程中积累下来的经验和总结!

简介

这个站点已经开启超过7年, 很高兴它可以帮到有需要的人. 信息有价, 知识无价, 每逢闲暇, 我会来维护这个repo, 给刷题的朋友们一些我的想法和见解. 下面来简单介绍一下:

  • README.md: 所有所做过的题目
  • ReviewPage.md: 所有题目的总结和归纳(不断完善中)
  • KnowledgeHash2.md: 对所做过的知识点的一些笔记
  • SystemDesign.md: 对系统设计的一些笔记

001 | about 土汪

tuwangbrick.substack.com 是2022年开启的一个news letter周刊, 每周一更新, 内容是一些工作上遇到的思考, 介绍些遇到的新工具, 偶尔吐槽. 欢迎大家订阅我的周刊. 或者订阅RSS Feed: https://tuwangbrick.substack.com/feed.

○ 📅 欢迎大家在Calendly上跟我约时间1:1, 聊工作生活

○ 👨‍💻 Social Media: YouTube, 小红书, B站, Twitter

○ 🎙 Podcast: 土汪遛弯儿 (小宇宙, Spotify, Apple Podcast)

○ 💬 Chat: 微信 TuwangZ, Discord - tuwang

Youtube 频道: 土汪遛弯儿未来会持续更新在北美科技行业工作的故事和经验. 有任何程序员工作的疑问, 可以加入上面的discord留言.

希望大家学习顺利, 对未来充满希望!

002 | 目录 Java Algorithm Problems

Leetcode# Problem Level Tags Time Space Language Sequence
N/A Jump Game II.java Hard [Array, Coordinate DP, DP, Greedy] O(n) O(1) Java 0
N/A Majority Number II.java Medium [Enumeration, Greedy] Java 1
N/A Search a 2D Matrix II.java Medium [Binary Search, Divide and Conquer] Java 2
N/A Missing Ranges.java Medium [Array] Java 3
N/A Inorder Successor in BST.java Medium [BST, Tree] Java 4
N/A Convert Integer A to Integer B.java Easy [Bit Manipulation] Java 5
N/A Backpack VI.java Medium [Backpack DP, DP] Java 6
N/A Total Occurrence of Target.java Medium [] Java 7
N/A House Robber III.java Medium [DFS, DP, Status DP, Tree] Java 8
N/A Binary Tree Maximum Path Sum II.java Medium [DFS, Tree] Java 9
N/A Backpack V.java Medium [Backpack DP, DP] Java 10
N/A Closest Number in Sorted Array.java Easy [Binary Search] Java 11
N/A Convert Expression to Polish Notation.java Hard [Binary Tree, DFS, Expression Tree, Stack] Java 12
N/A Missing Number.java Easy [Array, Bit Manipulation, Math] Java 13
N/A Restore IP Addresses.java Medium [Backtracking, DFS, String] Java 14
N/A Linked List Cycle II.java Medium [Linked List, Math, Two Pointers] Java 15
N/A Unique Binary Search Tree.java Medium [BST, DP, Tree] Java 16
N/A Largest Number.java Medium [Sort] Java 17
N/A Reverse String.java Easy [String, Two Pointers] Java 18
N/A Triangles.java Medium [Array, Coordinate DP, DFS, DP, Memoization] Java 19
N/A Frog Jump.java Hard [DP, Hash Table] Java 20
N/A Summary Ranges.java Medium [Array] Java 21
N/A Sliding Window Median.java Hard [Design, Heap, MaxHeap, MinHeap, Sliding Window] Java 22
N/A Single Number III.java Medium [Bit Manipulation] Java 23
N/A Trailing Zeros.java Easy [Math] Java 24
N/A Fast Power.java Medium [DFS, Divide and Conquer] Java 25
N/A Perfect Rectangle.java Hard [Design, Geometry, Hash Table] Java 26
N/A Total Hamming Distance.java Medium [Bit Manipulation] O(n) O(1), 32-bit array Java 27
N/A Word Pattern.java Easy [] Java 28
N/A Two Sum IV - Input is a BST.java Easy [Tree] Java 29
N/A Count 1 in Binary.java Easy [Bit Manipulation] Java 30
N/A Two Lists Sum.java Medium [Linked List] Java 31
N/A Flatten 2D Vector.java Medium [Design] Java 32
N/A Hamming Distance.java Easy [] Java 33
N/A Find the Weak Connected Component in the Directed Graph.java Medium [Union Find] Java 34
N/A Interval Minimum Number.java Medium [Binary Search, Divide and Conquer, Lint, Segment Tree] Java 35
N/A Stone Game.java Medium [DP] Java 36
N/A Longest Increasing Continuous subsequence II.java Medium [Array, Coordinate DP, DP, Memoization] Java 37
N/A Plus One.java Easy [Array, Math] Java 38
N/A Paint Fence.java Easy [DP, Sequence DP] O(n) O(n) Java 39
N/A Line Reflection.java Medium [Hash Table, Math] O(n) O(n) Java 40
N/A Binary Representation.java Hard [Bit Manipulation, String] Java 41
N/A Longest Consecutive Sequence.java Hard [Array, Hash Table, Union Find] Java 42
N/A Find Minimum in Rotated Sorted Array.java Medium [Array, Binary Search] Java 43
N/A Binary Tree Longest Consecutive Sequence II.java Medium [DFS, Divide and Conquer, Double Recursive, Tree] Java 44
N/A Minimum Subarray.java Easy [Array, DP, Greedy, Sequence DP, Subarray] O(m) O(1) Java 45
N/A Connecting Graph.java Medium [Union Find] Java 46
N/A Count of Smaller Number.java Medium [Binary Search, Lint, Segment Tree] Java 47
N/A Binary Gap.java Easy [Bit Manipulation] O(n), n = # of bits O(1) Java 48
N/A Flip Game II.java Medium [Backtracking, DFS, DP] Java 49
N/A Subtree of Another Tree.java Easy [DFS, Divide and Conquer, Tree] Java 50
N/A Binary Tree Level Order Traversal II.java Medium [BFS, Tree] Java 51
N/A Maximum Average Subarray I.java Easy [Array, Subarray] O(n) O(1) Java 52
N/A IndexMatch.java Easy [] Java 53
N/A Walls and Gates.java Medium [BFS, DFS] Java 54
N/A Decode String.java Medium [DFS, Divide and Conquer, Stack] Java 55
N/A The Maze.java Medium [BFS, DFS] Java 56
N/A Palindromic Substrings.java Medium [DP, String] Java 57
N/A Rearrange String k Distance Apart.java Hard [Greedy, Hash Table, Heap] Java 58
N/A Count and Say.java Easy [Basic Implementation, String] Java 59
N/A Median of Two Sorted Arrays.java Hard [Array, Binary Search, DFS, Divide and Conquer] Java 60
N/A Perfect Squares.java Medium [BFS, DP, Math, Partition DP] Java 61
N/A Word Search.java Medium [Array, Backtracking, DFS] Java 62
N/A Backpack II.java Medium [Backpack DP, DP] Java 63
N/A Reshape the Matrix.java Easy [] Java 64
N/A Update Bits.java Medium [Bit Manipulation] Java 65
N/A Triangle Count.java Medium [Array] Java 66
N/A Remove Duplicate Letters.java Hard [Greedy, Hash Table, Stack] Java 67
N/A Permutation Sequence.java Medium [Backtracking, Math] Java 68
N/A House Robber II.java Medium [DP, Sequence DP, Status DP] Java 69
N/A O(1) Check Power of 2.java Easy [Bit Manipulation] Java 70
N/A Letter Combinations of a Phone Number.java Medium [Backtracking, String] Java 71
N/A Backspace String Compare.java Easy [Stack, Two Pointers] Java 72
N/A Minimum Size Subarray Sum.java Medium [Array, Binary Search, Subarray, Two Pointers] O(n) O(1) Java 73
N/A Implement Stack using Queues.java Easy [Design, Stack] Java 74
N/A Minimum Absolute Difference in BST.java Easy [BST] Java 75
N/A Maximum Binary Tree.java Medium [Stack, Tree] Java 76
N/A ColorGrid.java Medium [Design, Hash Table] Java 77
N/A HashWithArray.java Easy [] Java 78
N/A Flood Fill.java Easy [DFS] Java 79
N/A Construct Binary Tree from Inorder and Postorder Traversal.java Medium [Array, DFS, Divide and Conquer, Tree] Java 80
N/A Backpack.java Medium [Backpack DP, DP] Java 81
N/A Longest Common Subsequence.java Medium [DP, Double Sequence DP, Sequence DP] Java 82
N/A Peeking Iterator.java Medium [Design] Java 83
N/A Orderly Queue.java Hard [Math, String] Java 84
N/A QuickSort.java Medium [Quick Sort, Sort] Java 85
N/A Maximal Rectangle.java Hard [Array, DP, Hash Table, Stack] Java 86
N/A Expression Evaluation.java Hard [Binary Tree, DFS, Expression Tree, Minimum Binary Tree, Stack] Java 87
N/A Subtree.java Easy [DFS, Tree] Java 88
N/A LFU Cache.java Hard [Design, Hash Table] Java 89
N/A Cosine Similarity.java Easy [Basic Implementation] Java 90
N/A Scramble String.java Hard [DP, Interval DP, String] Java 91
N/A Redundant Connection.java Medium [BFS, DFS, Graph, Tree, Union Find] Java 92
N/A Rotate List.java Medium [Linked List, Two Pointers] Java 93
N/A Swap Nodes in Pairs.java Medium [Linked List] Java 94
N/A Longest Increasing Continuous subsequence.java Easy [Array, Coordinate DP, DP] Java 95
N/A K Edit Distance.java Hard [DP, Double Sequence DP, Sequence DP, Trie] Java 96
N/A Combinations.java Medium [Backtracking, Combination, DFS] Java 97
N/A Max Area of Island.java Easy [Array, DFS] Java 98
N/A Sort List.java Medium [Divide and Conquer, Linked List, Merge Sort, Sort] Java 99
N/A Find Peak Element.java Medium [Array, Binary Search] Java 100
N/A Word Search II.java Hard [Backtracking, DFS, Trie] Java 101
N/A K Empty Slots.java Hard [Array, BST, TreeSet] Java 102
N/A Gray Code.java Medium [Backtracking] Java 103
N/A Encode and Decode TinyURL.java Medium [Hash Table, Math] Java 104
N/A Game of Life.java Medium [Array] Java 105
N/A Compare Version Numbers.java Medium [String] Java 106
N/A Singleton.java Easy [Design] Java 107
N/A Ugly Number.java Medium [Math] Java 108
N/A Russian Doll Envelopes.java Hard [Binary Search, Coordinate DP, DP] Java 109
N/A Rehashing.java Medium [Hash Table] Java 110
N/A Kth Smallest Sum In Two Sorted Arrays.java Hard [] Java 111
N/A Longest Common Substring.java Medium [DP, Double Sequence DP, Sequence DP, String] Java 112
N/A Rotate Image.java Medium [Array, Enumeration] Java 113
N/A Backpack III.java Hard [Backpack DP, DP] Java 114
N/A Combination Sum IV.java Medium [Array, Backpack DP, DP] Java 115
N/A Number of Longest Increasing Subsequence.java Medium [Coordinate DP, DP] O(n^2) Java 116
N/A Permutation Index.java Easy [] Java 117
N/A 4Sum.java Medium [Hash Table] Java 118
N/A Shortest Palindrome.java Hard [KMP, String] Java 119
N/A Convert Sorted Array to Binary Search Tree.java Easy [DFS, Divide and Conquer, Tree] Java 120
N/A Populating Next Right Pointers in Each Node.java Medium [DFS, Divide and Conquer, Tree] Java 121
N/A Space Replacement.java Medium [String] Java 122
N/A Contiguous Array.java Medium [Hash Table] Java 123
N/A Reverse Linked List II .java Medium [Linked List] Java 124
N/A Palindrome Pairs.java Hard [Hash Table, String, Trie] Java 125
N/A Find Peak Element II.java Hard [Binary Search, DFS, Divide and Conquer] Java 126
N/A Minimum Height Trees.java Medium [BFS, Graph] Java 127
N/A Longest Substring Without Repeating Characters.java Medium [Hash Table, String, Two Pointers] Java 128
N/A Fraction to Recurring Decimal.java Medium [Hash Table, Math] Java 129
N/A Wiggle Sort.java Medium [Array, Sort] Java 130
N/A Reverse Words in a String II.java Medium [String] Java 131
N/A Remove Node in Binary Search Tree.java Hard [BST] Java 132
N/A Reorder List.java Medium [Linked List] Java 133
N/A Redundant Connection II.java Hard [DFS, Graph, Tree, Union Find] Java 134
N/A [tool] Quick Select - Median.java Easy [Array, Lint, Quick Select, Quick Sort, Two Pointers] O(n) O(logN) Java 135
N/A Swap Bits.java Easy [Bit Manipulation] Java 136
N/A Friends Of Appropriate Ages.java Medium [Array, Math] Java 137
N/A Longest Increasing Subsequence.java Medium [Binary Search, Coordinate DP, DP, Memoization] O(n^2) dp, O(nLogN) binary search O(n) Java 138
N/A Power of Two.java Easy [Bit Manipulation, Math] Java 139
N/A Min Stack.java Easy [Design, Stack] Java 140
N/A Count of Smaller Number before itself.java Hard [] Java 141
N/A Majority Number III.java Medium [Hash Table, Linked List] Java 142
N/A Number of Digit One.java Hard [Math] Java 143
N/A Tweaked Identical Binary Tree.java Easy [DFS, Tree] Java 144
N/A Search Range in Binary Search Tree .java Medium [BST, Binary Tree] Java 145
N/A Best Time to Buy and Sell Stock III.java Hard [Array, DP, Sequence DP] Java 146
N/A Design Search Autocomplete System.java Hard [Design, Hash Table, MinHeap, PriorityQueue, Trie] input: O(x), where x = possible words, constructor: O(mn) m = max length, n = # of words O(n^2), n = # of possible words, n = # of trie levels; mainlay saving the Map<S, freq> Java 147
N/A Subsets II.java Medium [Array, BFS, Backtracking, DFS] O(2^n) Java 148
N/A One Edit Distance.java Medium [String] Java 149
N/A Segment Tree Modify.java Medium [Binary Tree, DFS, Divide and Conquer, Lint, Segment Tree] Java 150
N/A Distinct Subsequences.java Hard [DP, String] Java 151
N/A Insert Node in a Binary Search Tree .java Easy [BST] Java 152
N/A Container With Most Water.java Medium [Array, Two Pointers] Java 153
N/A Word Ladder.java Medium [BFS] Java 154
N/A Single Number II.java Medium [Bit Manipulation] Java 155
N/A Heaters.java Easy [] Java 156
N/A Kth Smallest Element in a BST.java Medium [BST, DFS, Stack, Tree] Java 157
N/A Robot Room Cleaner.java Hard [Backtracking, DFS] Java 158
N/A Coins in a Line II.java Medium [Array, DP, Game Theory, Memoization, MiniMax] Java 159
N/A Partition List.java Medium [Linked List, Two Pointers] Java 160
N/A Classical Binary Search.java Easy [Binary Search] Java 161
N/A Wood Cut.java Medium [Binary Search] Java 162
N/A Connecting Graph III.java Medium [Union Find] Java 163
N/A Invert Binary Tree.java Easy [BFS, DFS, Tree] Java 164
N/A Remove Duplicates from Unsorted List.java Medium [Linked List] Java 165
N/A Maximum Size Subarray Sum Equals k.java Medium [Hash Table, PreSum, Subarray] O(n) O(n) Java 166
N/A The Smallest Difference.java Medium [Array, Sort, Two Pointers] Java 167
N/A Unique Binary Search Tree II.java Medium [BST, DP, Divide and Conquer, Tree] Java 168
N/A Encode and Decode Strings.java Medium [String] Java 169
N/A Remove Duplicates from Sorted List II.java Medium [Linked List] Java 170
N/A Subarray Sum II.java Hard [Array, Binary Search, Two Pointers] Java 171
N/A Matrix Zigzag Traversal.java Easy [] Java 172
N/A Ones and Zeroes.java Hard [DP] Java 173
N/A Number of Connected Components in an Undirected Graph.java Medium [BFS, DFS, Graph, Union Find] Java 174
N/A Submatrix Sum.java Medium [Array, Hash Table, PreSum] Java 175
N/A Zigzag Iterator.java Medium [BST] Java 176
N/A Find the Connected Component in the Undirected Graph.java Medium [BFS, DFS] Java 177
N/A Implement Stack.java Easy [Stack] Java 178
N/A Number of Airplane in the sky.java Medium [Array, Interval, PriorityQueue, Sort, Sweep Line] Java 179
N/A Surrounded Regions.java Medium [BFS, DFS, Matrix DFS, Union Find] Java 180
N/A Wildcard Matching.java Hard [Backtracking, DP, Double Sequence DP, Greedy, Sequence DP, String] Java 181
N/A Expression Add Operators.java Hard [Backtracking, DFS, Divide and Conquer, String] O(4^n) O(4^n) Java 182
N/A Cracking the Safe.java Hard [DFS, Greedy, Math] Java 183
N/A Unique Word Abbreviation.java Medium [Design, Hash Table] Java 184
N/A Best Time to Buy and Sell Stock IV.java Hard [DP, Sequence DP] Java 185
N/A Find Minimum in Rotated Sorted Array II.java Hard [Array, Binary Search] Java 186
N/A Longest Valid Parentheses.java Hard [Coordinate DP, Stack, String] Java 187
N/A Ugly Number II.java Medium [DP, Enumeration, Heap, Math, PriorityQueue] O(n) O(n) Java 188
N/A Add Two Numbers II.java Medium [Linked List] Java 189
N/A Maximum Average Subarray II.java Review [Array, Binary Search, PreSum] Java 190
N/A Expression Tree Build.java Hard [Binary Tree, Expression Tree, Minimum Binary Tree, Stack] Java 191
N/A Merge Two Binary Trees.java Easy [DFS, Tree] Java 192
N/A Copy Books.java Hard [Binary Search, DP, Partition DP] Java 193
N/A Power of Three.java Easy [Math] Java 194
N/A Sort Colors II.java Medium [Partition, Quick Sort, Sort, Two Pointers] Java 195
N/A Maximum Subarray III.java Review [] Java 196
N/A Path Sum II.java Easy [Backtracking, DFS, Tree] Java 197
N/A Segment Tree Query II.java Medium [Binary Tree, DFS, Divide and Conquer, Lint, Segment Tree] Java 198
N/A Shortest Distance from All Buildings.java Hard [BFS] Java 199
N/A Brick Wall.java Medium [Hash Table] O(mn) O(X), X = max wall width Java 200
N/A Longest Increasing Path in a Matrix.java Hard [Coordinate DP, DFS, DP, Memoization, Topological Sort] Java 201
N/A Interleaving String.java Hard [DP, String] Java 202
N/A Shuffle an Array.java Medium [Permutation] Java 203
N/A Recover Binary Search Tree.java Hard [BST, DFS, Tree] Java 204
N/A My Calendar I.java Medium [Array, TreeMap] Java 205
N/A Evaluate Reverse Polish Notation.java Medium [Stack] O(n) O(n) Java 206
N/A Counting Bits.java Medium [Bit Manipulation, Bitwise DP, DP] Java 207
N/A Sort Letters by Case.java Medium [Partition, Sort, String, Two Pointers] Java 208
N/A Two Strings Are Anagrams.java Easy [] Java 209
N/A Two Sum II - Input array is sorted.java Medium [Array, Binary Search, Two Pointers] Java 210
N/A [HackerRank]. Change to Anagram.java Easy [String] Java 211
N/A Implement Queue using Stacks.java Easy [Design, Stack] Java 212
N/A Basic Calculator.java Hard [Binary Tree, Expression Tree, Math, Minimum Binary Tree, Stack] Java 213
N/A Word Squares.java Hard [Backtracking, Trie] Java 214
N/A Insertion Sort List.java Medium [Linked List, Sort] Java 215
N/A Interval Sum.java Medium [Binary Search, Lint, Segment Tree] Java 216
N/A Strobogrammatic Number II.java Medium [DFS, Enumeration, Math, Sequence DFS] Java 217
N/A The Maze II.java Medium [BFS, DFS, PriorityQueue] Java 218
N/A k Sum.java Hard [DP] Java 219
N/A Coins in a Line III.java Hard [Array, DP, Game Theory, Interval DP, Memoization] Java 220
N/A Convert Sorted List to Binary Search Tree.java Medium [BST, DFS, Divide and Conquer, Linked List] Java 221
N/A Guess Number Higher or Lower.java Easy [Binary Search] Java 222
N/A Trapping Rain Water II.java Hard [BFS, Heap, MinHeap, PriorityQueue] Java 223
N/A Bricks Falling When Hit.java Hard [Union Find] Java 224
N/A Subarray Sum Closest.java Medium [PreSum, PriorityQueue, Sort, Subarray] O(nlogn) O(n) Java 225
N/A Burst Balloons.java Hard [DP, Divide and Conquer, Interval DP, Memoization] Java 226
N/A Partition Array by Odd and Even.java Easy [Array, Two Pointers] Java 227
N/A Best Time to Buy and Sell Stock with Cooldown.java Medium [DP] Java 228
N/A Palindrome Partitioning II.java Hard [DP, Partition DP] Java 229
N/A Convert Binary Search Tree to Sorted Doubly Linked List (extra space).java Medium [Linked List, Stack, Tree] O(n) O(n) Java 230
N/A Kth Largest Element in an Array.java Medium [Divide and Conquer, Heap, MinHeap, PriorityQueue, Quick Sort] Java 231
N/A Sliding Puzzle.java Hard [BFS, Graph] Java 232
N/A Interval Sum II.java Hard [Binary Search, Lint, Segment Tree] Java 233
N/A Add Digits.java Easy [Math] Java 234
N/A HashWithCustomizedClass(LinkedList).java Medium [Hash Table] Java 235
N/A Maximum Vacation Days.java Hard [DP] Java 236
N/A Smallest Subtree with all the Deepest Nodes.java Medium [DFS, Divide and Conquer, Tree] O(n) O(n) Java 237
N/A Kth Smallest Element in a Sorted Matrix.java Medium [Binary Search, Heap] O(n + klogn) O(n) Java 238
N/A Combination Sum III.java Medium [Array, Backtracking, Combination, DFS] Java 239
N/A Last Position of Target.java Easy [Binary Search] Java 240
N/A Path Sum III.java Easy [DFS, Double Recursive, Tree] Java 241
N/A Convert Expression to Reverse Polish Notation.java Hard [Binary Tree, DFS, Expression Tree, Stack] Java 242
N/A Complete Binary Tree.java Easy [BFS, Tree] Java 243
N/A Best Time to Buy and Sell Stock with Transaction Fee.java Medium [Array, DP, Greedy, Sequence DP, Status DP] O(n) O(n), O(1) rolling array Java 244
N/A Pow(x, n).java Medium [Binary Search, Math] Java 245
N/A Maximum Subarray II.java Medium [Array, DP, Greedy, PreSum, Sequence DP, Subarray] Java 246
N/A Sort Colors.java Medium [Array, Partition, Quick Sort, Sort, Two Pointers] Java 247
N/A Word Ladder II.java Hard [Array, BFS, Backtracking, DFS, Hash Table, String] Java 248
N/A Sum of Two Integers.java Easy [Bit Manipulation] Java 249
N/A Predict the Winner.java Medium [DP, MiniMax] Java 250
N/A Connecting Graph II.java Medium [Union Find] Java 251
N/A Search Insert Position.java Easy [] Java 252
N/A Longest Univalue Path.java Easy [] Java 253
N/A Contains Duplicate III.java Medium [BST] Java 254
N/A Spiral Matrix.java Medium [Array, Enumeration] Java 255
N/A Next Closest Time.java Medium [Basic Implementation, Enumeration, String] Java 256
N/A Group Shifted Strings.java Medium [Hash Table, String] Java 257
N/A The Maze III.java Hard [BFS, DFS, PriorityQueue] Java 258
N/A Coins in a Line.java Medium [DP, Game Theory, Greedy] Java 259
N/A Binary Tree Longest Consecutive Sequence.java Medium [DFS, Divide and Conquer, Tree] Java 260
N/A The Spiral Matrix II.java Medium [Array] Java 261
N/A Trim a Binary Search Tree.java Easy [BST, Tree] Java 262
N/A Number Of Corner Rectangles.java Medium [DP, Math] Java 263
N/A Queue Reconstruction by Height.java Medium [Greedy] Java 264
N/A Minimum Swaps To Make Sequences Increasing.java Medium [Coordinate DP, DP, Status DP] Java 265
N/A Interleaving Positive and Negative Numbers.java Medium [Two Pointers] Java 266
N/A Path Sum IV.java Medium [DFS, Hash Table, Tree] Java 267
N/A Excel Sheet Column Number.java Easy [Math] Java 268
N/A Target Sum.java Medium [DFS, DP] Java 269
N/A Partition Array.java Medium [Array, Quick Sort, Sort, Two Pointers] Java 270
N/A Bus Routes.java Hard [BFS] Java 271
N/A Max Sum of Rectangle No Larger Than K.java Hard [Array, BST, Binary Search, DP, Queue, TreeSet] Java 272
N/A String Permutation.java Easy [] Java 273
N/A Maximum XOR of Two Numbers in an Array.java Medium [Bit Manipulation, Trie] Java 274
N/A Search for a Range.java Medium [Array, Binary Search] Java 275
N/A Palindrome Permutation II.java Medium [Backtracking, Permutation] Java 276
N/A Populating Next Right Pointers in Each Node II.java Medium [DFS, Tree] O(n) O(1) Java 277
N/A Nim Game.java Easy [Brainteaser, DP, Game Theory] Java 278
N/A Search a 2D Matrix.java Medium [Array, Binary Search] Java 279
N/A Largest Rectangle in Histogram.java Hard [Array, Monotonous Stack, Stack] Java 280
[lint] [lint]. Merge k Sorted Arrays.java Medium [Heap, MinHeap, PriorityQueue] O(nlogk) O(k) Java 281
[lint] [lint]. Segment Tree Build II.java Medium [Binary Tree, Divide and Conquer, Lint, Segment Tree] Java 282
[lint] [lint]. Nth to Last Node in List.java Easy [Linked List, Lint] Java 283
[lint] [lint]. Product of Array Exclude Itself.java Medium [Array, Lint] Java 284
[lint] [lint]. Compare Strings.java Easy [Lint, String] Java 285
[lint] [lint]. Segment Tree Query.java Medium [Binary Tree, DFS, Divide and Conquer, Lint, Segment Tree] Java 286
[lint] [lint]. HashHeap.java Hard [HashHeap, Heap, Lint] Java 287
[lint] [lint]. Longest Words.java Easy [Hash Table, Lint, String] Java 288
[lint] [lint]. Anagrams.java Medium [Array, Hash Table, Lint] O(n) O(n) Java 289
[lint] [lint]. 3 Sum Closest.java Medium [Array, Lint, Two Pointers] Java 290
[lint] [lint]. Unique Characters.java Easy [Array, Lint, String] Java 291
[lint] [lint]. Lowest Common Ancestor II.java Easy [Hash Table, Lint, Tree] Java 292
[lint] [lint]. Heapify.java Medium [HashHeap, Heap, Lint, MinHeap] Java 293
[lint] [lint]. Subarray Sum.java Easy [Array, Hash Table, Lint, PreSum, Subarray] O(n) O(n) Java 294
[lint] [lint]. Recover Rotated Sorted Array.java Easy [Array, Lint] Java 295
[lint] [lint]. 2 Sum II.java Medium [Array, Binary Search, Lint, Two Pointers] Java 296
[lint] [lint]. Segment Tree Build.java Medium [Binary Tree, Divide and Conquer, Lint, Segment Tree] Java 297
[tool] [tool]. MergeSort.java Medium [Lint, Merge Sort, Sort] O(mlogn) O(n) Java 298
[tool] [tool]. Hash Function.java Easy [Hash Table, Lint] O(1) get O(n) store map Java 299
[tool] [tool]. UnionFind.java Medium [Lint, Union Find] O(n), with Path Compression O(mN), with Union by Rank O(logN) O(n) Java 300
[tool] [tool]. Topological Sorting.java Medium [BFS, DFS, Lint, Topological Sort] O(V + E) O(V + E) Java 301
36 36. Valid Sudoku.java Easy [Enumeration, Hash Table] (mn) (mn) Java 302
359 359. Logger Rate Limiter.java Easy [Design, Hash Table] O(1) O(n) Java 303
198 198. House Robber.java Easy [DP, Sequence DP, Status DP] O(n) O(n) or rolling array O(1) Java 304
21 21. Merge Two Sorted Lists.java Easy [Linked List] O(n) O(1) Java 305
102 102. Binary Tree Level Order Traversal.java Medium [BFS, DFS, Tree] O(n) O(n) Java 306
788 788. Rotated Digits.java Easy [Basic Implementation, String] O(n) O(n) Java 307
42 42. Trapping Rain Water.java Hard [Array, Stack, Two Pointers] O(n) O(1) Java 308
347 347. Top K Frequent Elements.java Medium [Hash Table, Heap, MaxHeap, MinHeap, PriorityQueue] O(n) O(n) Java 309
269 269. Alien Dictionary.java Hard [BFS, Backtracking, DFS, Graph, Topological Sort] O(n), n = # of graph edges O(n) Java 310
237 237. Delete Node in a Linked List.java Easy [Linked List] Java 311
142 142. Linked List Cycle II.java Medium [Cycle Detection, Linked List, Slow Fast Pointer, Two Pointers] O(n) O(1) Java 312
448 448. Find All Numbers Disappeared in an Array.java Easy [Array, Bucket Sort] O(n) O(1) Java 313
360 360. Sort Transformed Array.java Medium [Math, Two Pointers] O(n) O(n) store result Java 314
22 22. Generate Parentheses.java Medium [Backtracking, DFS, Sequence DFS, String] O(2^n) O(2^n) Java 315
849 849. Maximize Distance to Closest Person.java Easy [Array, Basic Implementation, Two Pointers] O(n) O(1) Java 316
408 408. Valid Word Abbreviation.java Easy [Basic Implementation, String] Java 317
415 415. Add Strings.java Easy [Basic Implementation, Math, String] O(n) O(n) Java 318
83 83. Remove Duplicates from Sorted List.java Easy [Linked List] Java 319
1108 1108. Defanging an IP Address.java Easy [Basic Implementation, String] Java 320
1021 1021. Remove Outermost Parentheses.java Easy [Stack] Java 321
236 236. Lowest Common Ancestor of a Binary Tree.java Medium [DFS, Tree] O(n) O(n) Java 322
766 766. Toeplitz Matrix.java Easy [Array] O(mn) O(1) Java 323
953 953. Verifying an Alien Dictionary.java Easy [Hash Table] O(nm) O(1) Java 324
1053 1053. Previous Permutation With One Swap.java Medium [Array, Greedy, Permutation] O(n) O(1) Java 325
1213 1213. Intersection of Three Sorted Arrays.java Easy [Hash Table, Two Pointers] O(m + n + h) two pointers approach O(1) Java 326
383 383. Ransom Note.java Easy [Basic Implementation, String] Java 327
56 56. Merge Intervals.java Medium [Array, PriorityQueue, Sort, Sweep Line] O(nlogn) O(n) Java 328
252 252. Meeting Rooms.java Easy [PriorityQueue, Sort, Sweep Line] O(nlogn) O(1) Java 329
665 665. Non-decreasing Array.java Easy [Array] O(n) O(1) Java 330
843 843. Guess the Word.java Hard [MiniMax] TODO TODO Java 331
986 986. Interval List Intersections.java Medium [Two Pointers] O(n) O(1) Java 332
76 76. Minimum Window Substring.java Hard [Hash Table, Sliding Window, String, Two Pointers] O(n) O(1) Java 333
293 293. Flip Game.java Easy [String] Java 334
244 244. Shortest Word Distance II.java Medium [Array, Design, Hash Table, Two Pointers] O(n) to build map, O(a + b) to query O(n) Java 335
686 686. Repeated String Match.java Easy [Basic Implementation, Edge Case, String] Java 336
80 80.Remove Duplicates from Sorted Array II.java Medium [Array, Two Pointers] Java 337
301 301. Remove Invalid Parentheses.java Hard [BFS, DFS, DP] Java 338
111 111. Minimum Depth of Binary Tree.java Easy [BFS, DFS, Tree] O(n) O(n) Java 339
1216 1216. Valid Palindrome III.java Hard [DFS, DP, Memoization, String] O(n^2) O(n^2) Java 340
7 7. Reverse Integer.java Easy [Math] O(n) O(1) Java 341
5 5. Longest Palindromic Substring.java Medium [DP, String] O(n^2) O(n^2) Java 342
303 303. Range Sum Query - Immutable.java Easy [DP, PreSum] O(1) query, O(n) setup O(n) Java 343
674 674. Longest Continuous Increasing Subsequence.java Easy [Array, Coordinate DP, DP, Sliding Window] O(n) O(1) Java 344
1007 1007. Minimum Domino Rotations For Equal Row.java Medium [Array, Greedy] O(n) O(1) Java 345
485 485. Max Consecutive Ones.java Easy [Array, Basic Implementation] O(n) O(1) Java 346
896 896. Monotonic Array.java Easy [Array] Java 347
207 207. Course Schedule.java Medium [BFS, Backtracking, DFS, Graph, Topological Sort] O(n) O(n) Java 348
327 327. Count of Range Sum.java Hard [BIT, Divide and Conquer, Merge Sort, PreSum, Segment Tree] O(nlogn) O(n) Java 349
987 987. Vertical Order Traversal of a Binary Tree.java Medium [BFS, Binary Tree, DFS, Hash Table, Tree] Java 350
26 26.Remove Duplicates from Sorted Array.java Easy [Array, Two Pointers] Java 351
429 429. N-ary Tree Level Order Traversal.java Medium [BFS, Tree] O(n) O(n) Java 352
275 275. H-Index II.java Medium [Binary Search] O(logN) O(1) extra Java 353
204 204. Count Primes.java Easy [Hash Table, Math] Java 354
58 58. Length of Last Word.java Easy [String] Java 355
496 496. Next Greater Element I.java Easy [Hash Table, Stack] O(n) O(n) Java 356
41 41. First Missing Positive.java Hard [Analysis, Array, Edge Case] O(n) O(1) Java 357
694 694. Number of Distinct Islands.java Medium [DFS, Hash Table] O(n) O(n) Java 358
717 717. 1-bit and 2-bit Characters.java Easy [Array] Java 359
53 53. Maximum Subarray.java Easy [Array, DFS, DP, Divide and Conquer, PreSum, Sequence DP, Subarray] O(n) O(n), O(1) rolling array Java 360
152 152. Maximum Product Subarray.java Medium [Array, DP, PreProduct, Subarray] O(n) O(1) Java 361
199 199. Binary Tree Right Side View.java Medium [BFS, DFS, Tree] O(n) O(n) Java 362
259 259. 3Sum Smaller.java Medium [Array, Sort, Two Pointers] Java 363
977 977. Squares of a Sorted Array.java Easy [Array, Two Pointers] O(n) O(n) Java 364
824 824. Goat Latin.java Easy [Basic Implementation, String] O(n) O(1) Java 365
308 308. Range Sum Query 2D - Mutable.java Hard [Binary Indexed Tree, Segment Tree] build(n), update(logn), rangeRuery(logn + k) O(n) Java 366
1203 1203. Sort Items by Groups Respecting Dependencies.java Hard [BFS, DFS, Graph, Topological Sort] O(V + E) to traverse the graph, #nodes + #edges O(V + E) Java 367
1153 1153. String Transforms Into Another String.java Hard [Graph] O(n) O(n) Java 368
1008 1008. Construct Binary Search Tree from Preorder Traversal.java Medium [DFS, Tree] O(n) O(n) Java 369
151 151. Reverse Words in a String.java Medium [String] O(n) Java 370
855 855. Exam Room.java Medium [PriorityQueue, Sort, TreeMap, TreeSet] O(logn) O(n) Java 371
31 31. Next Permutation.java Medium [Array, Permutation] O(n) O(1) Java 372
518 518. Coin Change 2.java Medium [Backpack DP, DP] O(n) O(n) Java 373
405 405. Convert a Number to Hexadecimal.java Easy [Bit Manipulation] Java 374
850 850. Rectangle Area II.java Hard [Segment Tree, Sweep Line] O(n^2) O(n) Java 375
515 515. Find Largest Value in Each Tree Row.java Medium [BFS, DFS, Tree] O(n) O(n) Java 376
253 253. Meeting Rooms II.java Medium [Greedy, Heap, PriorityQueue, Sort, Sweep Line] O(nlogn) O(n) Java 377
1161 1161. Maximum Level Sum of a Binary Tree.java Medium [BFS, DFS, Graph] O(n) visit all nodes O(n) Java 378
509 509. Fibonacci Number.java Easy [DP, Math, Memoization] Java 379
221 221. Maximal Square.java Medium [Coordinate DP, DP] O(mn) O(mn) Java 380
131 131. Palindrome Partitioning.java Medium [Backtracking, DFS] O(2^n) O(n^2) Java 381
136 136. Single Number.java Easy [Bit Manipulation, Hash Table] Java 382
222 222. Count Complete Tree Nodes.java Medium [Binary Search, DFS, Tree] O(n) O(h) Java 383
257 257. Binary Tree Paths.java Easy [Backtracking, Binary Tree, DFS] O(n) O(nlogn) Java 384
543 543. Diameter of Binary Tree.java Easy [Tree] O(n) when non-balanced O(n) when non-balanced Java 385
398 398. Random Pick Index.java Medium [Reservior Sampling] O(n) O(n) for input int[], O(1) extra space used Java 386
238 238. Product of Array Except Self.java Medium [Array, PreProduct] O(n) O(1) Java 387
1060 1060. Missing Element in Sorted Array.java Medium [Binary Search] O(logn) O(1) Java 388
1048 1048. Longest String Chain.java Medium [Bucket Sort, DP, Hash Table, Sort] O(n) O(n) Java 389
67 67. Add Binary.java Easy [Math, String, Two Pointers] Java 390
299 299. Bulls and Cows.java Medium [Hash Table] O(n) O(n) Java 391
557 557. Reverse Words in a String III.java Easy [String] Java 392
203 203. Remove Linked List Elements.java Easy [Linked List] Java 393
1219 1219. Path with Maximum Gold.java Medium [Backtracking, DFS] O(n^2) O(n) recursive depth Java 394
266 266. Palindrome Permutation.java Easy [Hash Table] O(n) O(n) Java 395
62 62. Unique Path.java Medium [Array, Coordinate DP, DP] O(mn) O(mn), rolling array O(n) Java 396
1091 1091. Shortest Path in Binary Matrix.java Medium [BFS] O(n^2) Java 397
1110 1110. Delete Nodes And Return Forest.java Medium [DFS, Divide and Conquer, Tree] O(n) O(logn) Java 398
1249 1249. Minimum Remove to Make Valid Parentheses.java Medium [Stack, String] O(n) O(n) Java 399
15 15. 3Sum.java Medium [Array, Sort, Two Pointers] O(n^2) Java 400
311 311. Sparse Matrix Multiplication.java Medium [Hash Table] O(mnk), where m = A.row, n = B.col, k = A.col = B.row O(1) extra Java 401
339 339. Nested List Weight Sum.java Easy [BFS, DFS, NestedInteger] O(n) O(h), h = levels Java 402
322 322. Coin Change.java Medium [Backpack DP, DFS, DP, Memoization] O(n * S) O(S) Java 403
55 55. Jump Game.java Medium [Array, DP, Greedy] O(n) O(1) Java 404
173 173. Binary Search Tree Iterator.java Medium [BST, Design, Stack, Tree] O(1) average O(h) Java 405
140 140. Word Break II.java Hard [Backtracking, DFS, DP, Hash Table, Memoization] O(n!) O(n!) Java 406
51 51. N-Queens.java Hard [Backtracking] O(n!) O(n^2) Java 407
875 875. Koko Eating Bananas.java Medium [Binary Search] O(n*logM) O(1) Java 408
189 189. Rotate Array.java Easy [Array, Rotation] Java 409
19 19. Remove Nth Node From End of List.java Medium [Linked List, Two Pointers] O(n) O(1) Java 410
134 134. Gas Station.java Medium [Greedy] O(n) O(1) Java 411
119 119. Pascal's Triangle II.java Easy [Array, Basic Implementation] O(k^2), pascal triangle size O(k^2) Java 412
1197 1197. Minimum Knight Moves.java Medium [BFS] O(8^n) O(8^n) Java 413
493 493. Reverse Pairs.java Medium [BST, Binary Indexed Tree, Divide and Conquer, Merge Sort, Segment Tree] Java 414
1306 1306. Jump Game III.java Medium [BFS, Graph] O(n) O(n) Java 415
305 305. Number of Islands II.java Hard [Union Find] O(k * log(mn)) O(mn) Java 416
206 206. Reverse Linked List.java Easy [Linked List] Java 417
277 277. Find the Celebrity.java Medium [Adjacency Matrix, Array, Graph, Greedy, Pruning] O(n) O(1) Java 418
741 741. Cherry Pickup.java Hard [DFS, DP] O(n^3) O(n^3), memo size Java 419
168 168. Excel Sheet Column Title.java Easy [Math] O(n) O(1) Java 420
104 104. Maximum Depth of Binary Tree.java Easy [DFS, Tree] Java 421
349 349. Intersection of Two Arrays.java Easy [Binary Search, Hash Table, Sort, Two Pointers] O(m + n) O(m + n) Java 422
443 443. String Compression.java Easy [Basic Implementation, String] Java 423
297 297. Serialize and Deserialize Binary Tree.java Hard [BFS, DFS, Deque, Design, Divide and Conquer, Tree] O(n) O(n) Java 424
46 46. Permutations.java Medium [BFS, Backtracking, DFS, Permutation] O(n!) O(n!) Java 425
844 844. Backspace String Compare.java Easy [Stack, Two Pointers] O(n) O(1) Java 426
9 9. Palindrome Number.java Easy [Math] Java 427
1094 1094. Car Pooling.java Medium [Greedy, Heap, PriorityQueue, Sort] O(n) O(1) only use bucket size 1000 Java 428
245 245. Shortest Word Distance III.java Medium [Array, Design, Hash Table, Two Pointers] O(n) O(1) Java 429
1117 1117. Building H2O.java Medium [Lock, Semaphore, Thread] Java 430
973 973. K Closest Points to Origin.java Medium [Divide and Conquer, Heap, Sort] O(klogk) O(k) Java 431
771 771. Jewels and Stones.java Easy [Hash Table] O(n) O(n) Java 432
200 200. Number of Islands.java Medium [BFS, DFS, Matrix DFS, Union Find] O(n) O(n) Java 433
141 141. Linked List Cycle.java Easy [Cycle Detection, Linked List, Slow Fast Pointer, Two Pointers] O(n) O(1) Java 434
567 567. Permutation in String.java Medium [Sliding Window, Two Pointers] O(m + n) O(1) Java 435
727 727. Minimum Window Subsequence.java Hard [DP, Hash Table, Sliding Window, String, Two Pointers] O(n^2) O(1) Java 436
158 158. Read N Characters Given Read4 II - Call multiple times.java Hard [Enumeration, String] O(n) O(n) Java 437
369 369. Plus One Linked List.java Medium [Linked List] O(n) O(1) Java 438
211 211. Add and Search Word - Data structure design.java Medium [Backtracking, Design, Trie] O(n) to search and to add word < O(mn), depends on the input. m = # of words Java 439
43 43. Multiply Strings.java Medium [Math, String] O(mn) O(mn) Java 440
621 621. Task Scheduler.java Medium [Array, Enumeration, Greedy, PriorityQueue, Queue] O(n) O(1) Java 441
680 680. Valid Palindrome II.java Easy [String] Java 442
295 295. Find Median from Data Stream.java Hard [Design, Heap, MaxHeap, MinHeap] O(1) get, O(logn) addNum O(n) Java 443
70 70. Climbing Stairs.java Easy [DP, Memoization, Sequence DP] Java 444
747 747. Largest Number At Least Twice of Others.java Easy [Array] Java 445
315 315. Count of Smaller Numbers After Self.java Hard [BST, Binary Indexed Tree, Binary Search, Divide and Conquer, Segment Tree] O(nlogn) O(n) Java 446
239 239. Sliding Window Maximum.java Hard [Deque, Heap, Sliding Window] O(n) O(n) Java 447
47 47. Permutations II.java Medium [Backtracking, DFS] Java 448
332 332. Reconstruct Itinerary.java Medium [Backtracking, DFS, Graph] O(n^n) O(�m) Java 449
88 88. Search in Rotated Sorted Array II.java Medium [Array, Binary Search] O(logn), worst O(n) O(1) Java 450
561 561. Array Partition I.java Easy [Array] O(nlogn) O(1) Java 451
387 387. First Unique Character in a String.java Easy [Hash Table, String] O(n) O(256) = O(1) Java 452
345 345. Reverse Vowels of a String.java Easy [String, Two Pointers] Java 453
39 39. Combination Sum.java Medium [Array, Backtracking, Combination, DFS] O(k * 2^n), k = avg rst length O(k) stack depth, if not counting result size Java 454
10 10. Regular Expression Matching.java Hard [Backtracking, DP, Double Sequence DP, Sequence DP, String] Java 455
367 367. Valid Perfect Square.java Easy [Binary Search, Math] O(logN) O(1) Java 456
270 270. Closest Binary Search Tree Value.java Easy [BST, Binary Search, Tree] O(logn) O(1) Java 457
28 28. Implement strStr().java Easy [String, Two Pointers] Java 458
1106 1106. Parsing A Boolean Expression.java Hard [DFS, Stack, String] Java 459
144 144. Binary Tree Preorder Traversal.java Medium [BFS, DFS, Stack, Tree] O(n) O(n) Java 460
852 852. Peak Index in a Mountain Array.java Easy [Binary Search] O(logn) O(1) Java 461
146 146. LRU Cache.java Medium [Design, Doubly Linked List, Hash Table, Linked List] O(1) O(1) Java 462
110 110. Balanced Binary Tree.java Easy [DFS, Tree] Java 463
1040 1040. Moving Stones Until Consecutive II.java Medium [Array, Sliding Window] O(nlogn) O(n) Java 464
246 246. Strobogrammatic Number.java Easy [Enumeration, Hash Table, Math, Two Pointers] O(n) O(1) Java 465
100 100. Same Tree.java Easy [BFS, DFS, Tree] O(n) O(logn) Java 466
307 307. Range Sum Query - Mutable.java Medium [Binary Indexed Tree, Segment Tree] build O(n), query (logn +k), update O(logn) O(n) Java 467
88 88. Merge Sorted Array.java Easy [Array, Two Pointers] O(n) O(1) Java 468
319 319. Bulb Switcher.java Medium [Brainteaser, Math] O(1) O(1) Java 469
112 112. Path Sum.java Easy [DFS, Tree] Java 470
463 463. Island Perimeter.java Easy [Hash Table] O(n) Java 471
170 170. Two Sum III - Data structure design.java Easy [Design, Hash Table, Memoization] O(n) O(n) Java 472
122 122. Best Time to Buy and Sell Stock II.java Easy [Array, DP, Greedy, Sequence DP, Status DP] O(n) O(1) greedy, O(n) dp Java 473
715 715. Range Module.java Hard [Segment Tree, TreeSet] query O(logn), update O(n) O(n) Java 474
12 12. Integer to Roman.java Medium [Basic Implementation, Math, String] O(n) O(n) Java 475
14 14. Longest Common Prefix.java Easy [String] Java 476
243 243. Shortest Word Distance.java Easy [Array, Two Pointers] O(n) O(1) Java 477
414 414. Third Maximum Number.java Easy [Array, PriorityQueue] Java 478
1267 1267. Count Servers that Communicate.java Medium [Array, Graph] O(mn) O(m + n) Java 479
20 20. Valid Parentheses.java Easy [Stack, String] O(n) O(n) Java 480
893 893. Groups of Special-Equivalent Strings.java Easy [Basic Implementation, String] Java 481
427 427. Construct Quad Tree.java Medium [Tree] O(n^2) O(n^2) Java 482
981 981. Time Based Key-Value Store.java Medium [Binary Search, Hash Table, TreeMap] set O(1), get(logn) O(n) Java 483
169 169. Majority Element.java Easy [Array, Bit Manipulation, Divide and Conquer, Moore Voting, Sort] O(n) O(1) Java 484
234 234. Palindrome Linked List.java Easy [Linked List, Two Pointers] O(n) O(1) Java 485
202 202. Happy Number.java Easy [Hash Table, Math] O(m), m iterations O(m), m number in set Java 486
69 69. Sqrt(x).java Easy [Binary Search, Math] Java 487
876 876. Middle of Linked List.java Easy [Linked List] Java 488
1026 1026. Maximum Difference Between Node and Ancestor.java Medium [DFS, Tree] O(n) O(logn) Java 489
78 78. Subsets.java Medium [Array, BFS, Backtracking, Bit Manipulation, DFS] O(2^n) O(2^n) Java 490
432 432. All One Data Structure.java Hard [Design, Doubly Linked List] O(1) O(n) Java 491
380 380. Insert Delete GetRandom O(1).java Medium [Array, Design, Hash Table] O(1) avg O(n) Java 492
560 560. Subarray Sum Equals K.java Medium [Array, Hash Table, PreSum, Subarray] O(n) O(n) Java 493
219 219. Contains Duplicate II.java Easy [Array, Hash Table] O(n) O(n) Java 494
91 91. Decode Ways.java Medium [DP, Partition DP, String] O(n) O(n) Java 495
205 205. Isomorphic Strings.java Easy [Hash Table] O(n) O(n) Java 496
639 639. Decode Ways II.java Hard [DP, Enumeration, Partition DP] O(n) O(n) Java 497
346 346. Moving Average from Data Stream.java Easy [Design, Queue, Sliding Window] O(1) for next() O(size) for fixed storage Java 498
145 145. Binary Tree Postorder Traversal.java Medium [Stack, Tree, Two Stacks] O(n) O(n) Java 499
938 938. Range Sum of BST.java Easy [BST, Recursion, Tree] Java 500
210 210. Course Schedule II.java Medium [BFS, DFS, Graph, Topological Sort] O(n) O(n) Java 501
68 68. Text Justification.java Hard [Enumeration, String] O(n) go over words O(maxLength) buffer list Java 502
314 314. Binary Tree Vertical Order Traversal.java Medium [BFS, DFS, Hash Table, Tree] O(n) O(n) Java 503
287 287. Find the Duplicate Number.java Medium [Array, Binary Search, Binary Search on Value, Cycle Detection, Slow Fast Pointer, Two Pointers] O(n) O(1) Java 504
242 242. Valid Anagram.java Easy [Hash Table, Sort] O(n) O(1), unique chars Java 505
340 340. Longest Substring with At Most K Distinct Characters.java Hard [Hash Table, LinkedHashMap, Sliding Window, String, Two Pointers] O(n) O(k) Java 506
217 217. Contains Duplicate.java Easy [Array, Hash Table] O(n) O(1) Java 507
103 103. Binary Tree Zigzag Level Order Traversal.java Medium [BFS, Stack, Tree] O(n) O(n) Java 508
1057 1057. Campus Bikes.java Medium [Bucket Sort, Greedy, PriorityQueue, Sort] O(mn) O(mn) Java 509
261 261. Graph Valid Tree.java Medium [BFS, DFS, Graph, Union Find] Java 510
64 64. Minimum Path Sum.java Medium [Array, Coordinate DP, DP] O(mn) O(n) rolling array Java 511
796 796. Rotate String.java Easy [String] Java 512
229 229. Majority Element II.java Medium [Array, Moore Voting] O(n) (1) Java 513
1041 1041. Robot Bounded In Circle.java Easy [String] Java 514
2 2. Add Two Numbers.java Medium [Linked List, Math] O(max(m,n)) O(max(m,n)) Java 515
157 157. Read N Characters Given Read4.java Easy [Enumeration, String] Java 516
114 114. Flatten Binary Tree to Linked List.java Medium [Binary Tree, DFS] O(n) O(n), stacks Java 517
121 121. Best Time to Buy and Sell Stock.java Easy [Array, DP, Sequence DP] Java 518
1004 1004. Max Consecutive Ones III.java Medium [Sliding Window, Two Pointers] O(n) O(1) Java 519
1146 1146. Snapshot Array.java Medium [Array, Hash Table, TreeMap] O(1) set, O(logn) get, O(x) snap, x = # of changes O(n * m), n = array size, m = # of snaps Java 520
273 273. Integer to English Words.java Hard [Enumeration, Math, String] O(n) O(1) Java 521
304 304. Range Sum Query 2D - Immutable.java Medium [DP, PreSum] O(mn) build, O(1) query O(mn) Java 522
605 605. Can Place Flowers.java Easy [Array, Greedy] O(n) O(1) Java 523
1 1. Two Sum.java Easy [Array, Hash Table] O(n) O(n) Java 524
118 118. Pascal's Triangle.java Easy [Array, Basic Implementation, List] O(n^2) based on pascal triangle size O(n^2) Java 525
23 23. Merge k Sorted Lists.java Medium [Divide and Conquer, Heap, Linked List, Merge Sort, PriorityQueue] O(nlogk) O(logk) Java 526
283 283. Move Zeroes.java Easy [Array, Two Pointers] O(n) O(1) Java 527
208 208. Implement Trie (Prefix Tree).java Medium [Design, Trie] Java 528
516 516. Longest Palindromic Subsequence.java Medium [DFS, DP, Interval DP, Memoization] O(n^2) O(n^2) Java 529
218 218. The Skyline Problem.java Hard [BIT, Divide and Conquer, HashHeap, Heap, PriorityQueue, Segment Tree, Sweep Line] O(n^2logn) O(n) Java 530
430 430. Flatten a Multilevel Doubly Linked List.java Medium [DFS, Linked List] O(n) O(1) Java 531
63 63. Unique Paths II.java Medium [Array, Coordinate DP, DP] O(mn) O(mn) Java 532
52 52. N-Queens II.java Hard [Backtracking] O(n!) O(n) Java 533
1033 1033. Moving Stones Until Consecutive.java Easy [Basic Implementation, Sort] O(1), only 3 elements O(1) Java 534
139 139. Word Break.java Medium [DP, Hash Table, Sequence DP] O(n^2) O(n) Java 535
105 105. Construct Binary Tree from Preorder and Inorder Traversal.java Medium [Array, DFS, Divide and Conquer, Hash Table, Tree] O(n) O(n) Java 536
125 125. Valid Palindrome.java Easy [String, Two Pointers] Java 537
449 449. Serialize and Deserialize BST.java Medium [Tree] O(n) O(��n) Java 538
274 274.H-Index.java Medium [Bucket Sort, Hash Table, Sort] O(n) O(n) Java 539
160 160. Intersection of Two Linked Lists.java Easy [Linked List] Java 540
40 40. Combination Sum II.java Medium [Array, Backtracking, Combination, DFS] O(k * 2^n), k = avg rst length O(n) stack depth, if not counting result size Java 541
410 410. Split Array Largest Sum.java N/A [] Java 542
724 724. Find Pivot Index.java Easy [Array, PreSum] O(n) O(1) Java 543
523 523. Continuous Subarray Sum.java Medium [Coordinate DP, DP, Math, PreSum, Subarray] O(n) O(k) Java 544
65 65. Valid Number.java Hard [Enumeration, Math, String] O(n) O(1) Java 545
350 350. Intersection of Two Arrays II.java Easy [Binary Search, Hash Table, Sort, Two Pointers] (n) (n) Java 546
364 364. Nested List Weight Sum II.java Medium [DFS, NestedInteger] O(n), visit all nodes O(h), depth Java 547
49 49. Group Anagrams.java Medium [Hash Table, String] O(nk) O(nk) Java 548
720 720. Longest Word in Dictionary.java Easy [Hash Table, Trie] O(nlogn) O(n) Java 549
438 438. Find All Anagrams in a String.java Medium [Hash Table, Sliding Window, Two Pointers] O(n) O(1) Java 550
632 632. Smallest Range Covering Elements from K Lists.java Hard [Hash Table, Sliding Window, Two Pointers] O(nlogn), n = total elements O(n) to store sorted list Java 551
138 138. Copy List with Random Pointer.java Medium [Hash Table, Linked List] O(n) O(n) Java 552
159 159. Longest Substring with At Most Two Distinct Characters.java Medium [Hash Table, Sliding Window, String, Two Pointers] O(n) O(1) Java 553
1043 1043. Partition Array for Maximum Sum.java Medium [DFS, DP, Graph, Memoization] O(n), calc memo[n] O(n) Java 554
33 33. Search in Rotated Sorted Array.java Medium [Array, Binary Search] O(logn) O(1) Java 555
760 760. Find Anagram Mappings.java Easy [Hash Table] O(n) O(n) Java 556
133 133. Clone Graph.java Medium [BFS, DFS, Graph] O(n) O(n) Java 557
743 743. Network Delay Time.java Medium [BFS, DFS, Graph, Heap, PQ] O(nlogn) O(n) Java 558
636 636. Exclusive Time of Functions.java Medium [Stack] O(n) O(n) Java 559
692 692. Top K Frequent Words.java Medium [Hash Table, Heap, MaxHeap, MinHeap, PriorityQueue, Trie] O(n) O(n) Java 560
1170 1170. Compare Strings by Frequency of the Smallest Character.java Easy [Array, String] O(m + n) O(m + n) Java 561
426 426. Convert Binary Search Tree to Sorted Doubly Linked List.java Medium [BST, DFS, Divide and Conquer, Linked List, Tree] O(n) O(1) Java 562
745 745. Prefix and Suffix Search.java Hard [Trie] O(N + Q) O(N) Java 563
8 8. String to Integer (atoi).java Medium [Math, String] O(n) O(n) Java 564
361 361. Bomb Enemy.java Medium [Coordinate DP, DP] O(mn) O(n) by calculating column sum Java 565
94 94. Binary Tree Inorder Traversal.java Easy [Hash Table, Stack, Tree] O(n) O(logn) Java 566
402 402. Remove K Digits.java Medium [Greedy, Monotonous Stack, Stack] O(n) O(n) Java 567
98 98. Validate Binary Search Tree.java Medium [BST, DFS, Divide and Conquer, Tree] O(n) O(logn) Java 568
1123 1123. Lowest Common Ancestor of Deepest Leaves.java Medium [BFS, DFS, Tree] O(n) O(n) Java 569
921 921. Minimum Add to Make Parentheses Valid.java Medium [] O(n) O(1) Java 570
399 399. Evaluate Division.java Medium [BFS, DFS, Graph, Union Find] Java 571
785 785. Is Graph Bipartite.java Medium [BFS, DFS, Garph] O(n) O(n) Java 572
767 767. Reorganize String.java Medium [Greedy, Hash Table, Heap, Sort, String] O(m), m = # of unique letters O(nLogm), n = length Java 573
71 71. Simplify Path.java Medium [Stack, String] O(n) O(n) Java 574
34 34. Find First and Last Position of Element in Sorted Array.java Medium [Array, Binary Search] O(logn) O(1) Java 575
278 278. First Bad Version.java Easy [Binary Search] O(logN) O(1) Java 576
124 124. Binary Tree Maximum Path Sum.java Hard [DFS, DP, Tree, Tree DP] O(n) O(logn) Java 577
721 721. Accounts Merge.java Medium [DFS, Hash Table, Union Find] Java 578
689 689. Maximum Sum of 3 Non-Overlapping Subarrays.java Hard [Array, DP] O(n) O(n) Java 579
101 101. Symmetric Tree.java Easy [BFS, DFS, Tree] O(n) O(n) Java 580
149 149. Max Points on a Line.java Hard [Array, Geometry, Hash Table, Math] O(n^2) O() Java 581
698 698. Partition to K Equal Sum Subsets.java Medium [DFS, DP, Recursion] O(k^(n-k) * k!) O(n) Java 582
57 57. Insert Interval.java Hard [Array, PriorityQueue, Sort, Sweep Line] O(n) O(n) Java 583
13 13. Roman to Integer.java Easy [Math, String] O(n) O(1) Java 584
716 716. Max Stack.java Medium [Design, Doubly Linked List, Stack, TreeMap] avg O(1), [O(logN) peekMax(), TreeMap]; [O(n) popMax(), TwoStack] O(n) Java 585
671 671. Second Minimum Node In a Binary Tree.java Easy [BFS, Tree] O(n) O(n) leaf nodes Java 586
366 366. Find Leaves of Binary Tree.java Medium [DFS, Tree] O(n) O(h) Java 587
235 235. Lowest Common Ancestor of a Binary Search Tree.java Easy [BST, DFS, Tree] O(logn) O(logn) Java 588
156 156. Binary Tree Upside Down.java Medium [DFS, Tree] O(n) O(h) Java 589
416 416. Partition Equal Subset Sum.java Medium [Backpack, DP] Java 590
611 611. Valid Triangle Number.java Medium [Array, Two Pointers] O(n^2) O(logn), sorting space Java 591
341 341. Flatten Nested List Iterator.java Medium [Design, NestedInteger, Stack] O(n) O(n) Java 592
254 254. Factor Combinations.java Medium [BFS, Backtracking, DFS] O(x), x is the # of results O(y), y is all ongoing candidates in queue Java 593
739 739. Daily Temperatures.java Medium [Hash Table, Monotonous Stack, Stack] O(n) O(n) Java 594
373 373. Find K Pairs with Smallest Sums.java Medium [Heap, MaxHeap, MinHeap] O(klogk) O(k) Java 595
256 256. Paint House.java Easy [DP, Sequence DP, Status DP] O(nm), m = # of colors O(nm), or O(1) with rolling array Java 596
265 265. Paint House II.java Hard [DP, Sequence DP, Status DP] O(NK^2): O(K) with rolling array Java 597
272 272. Closest Binary Search Tree Value II.java Hard [Stack, Tree] O(n) O(n) Java 598
72 72. Edit Distance.java Hard [DP, Double Sequence DP, Sequence DP, String] O(MN) Java 599
215 215. Kth Largest Element in an Array.java Medium [Divide and Conquer, Heap, MinHeap, PriorityQueue, Quick Select, Quick Sort] O(nlogk) O(k) Java 600

leet-code's People

Contributors

awangdev avatar beehuang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

leet-code's Issues

可不可以总结一下BDFS和recursion?

你好,无意中看到了你的这个文章,作为一个对coding完全不开窍的人来说,如获珍宝,谢谢分享。先刚尝试刷题,对任何题目都没有什么思路,无从下手,可不可以传授一点经验?recursion完全不懂,BDFS也不懂,可不可以开个专题讲一下对一个题目为什么我就需要用recursion和BDFS,如果用参数怎么定义?方法体怎么去思考写出来?谢谢

Another approach to ReverseInteger

"For ReverseInteger I thought maybe you would like to see a different approach for this problem, this is what I would do:

public int reverse(int x) {
        int ne=x<0 ? -1 : 1;
        x=Math.abs(x);
        long a=x%10;
        x/=10;
        while (x!=0){
            a*=10;
            a+=x%10;
            if(a < Integer.MIN_VALUE || a > Integer.MAX_VALUE)return 0;
            x/=10;
        }
        return Long.valueOf(a*ne).intValue();
    }"

you jump i jump

大拿,从知乎跟过来的,感激不尽,收藏,啃

Wildcard Matching 滚动数列的具体实现

您好,可不可以讲解下您是如何将 Wildcard Matching 中原本m * n 的dp array 利用滚动数列 转化成 2 * n的 dp array?

我注意到您用到了两个variable

int curr = 0;
int prev = 1;

我不太明白这两个varibale具体的意义何在,以及您是如何应用这两个variable 的
谢谢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.