The Python3 solutions for LeetCode problems.
| # | Title | Solutions | Time | Space | Comments |
|---|---|---|---|---|---|
| 1 | Two Sum | Python3(40ms) | O(N) | O(N) | |
| 2 | Add Two Numbers | Python3(112ms) | O(Max(N, M)) | O(1) | |
| 3 | Longest Substring Without Repeating Characters | Python3(72ms) | O(N) | O(1) | C# use array will slower |
| 4 | Median of Two Sorted Arrays | Python3(100ms) | O(Log(N+M)) | O(1) | |
| 5 | Longest Palindromic Substring | Python3(120ms) | O(N) | O(N) | Use Manacher's Algorithm |
| 6 | ZigZag Conversion | Python3(100ms) | O(N) | O(N) | |
| 7 | Reverse Integer | Python3(32ms) | O(1) | O(1) | |
| 8 | String to Integer (atoi) | Python3(40ms) | O(1) | O(1) | |
| 9 | Palindrome Number | Python3(68ms) | O(1) | O(1) | |
| 10 | Regular Expression Matching | Python3(48ms) | O(N*M) | O(N*M) | |
| 11 | Container With Most Water | Python3(40ms) | O(N) | O(1) | |
| 12 | Integer to Roman | Python3(44ms) | O(N) | O(1) | |
| 13 | Roman to Integer | Python3(56ms) | O(N) | O(1) | |
| 14 | Longest Common Prefix | Python3(32ms) | O(N) | O(1) | |
| 15 | 3Sum | Python3(400ms) | O(N2) | O(M) | For Python solution, use count to reduce time to O(min(N, M2)) and space to O(M) |
| 16 | 3Sum Closest | Python3(92ms) | O(N2) | O(1) | |
| 17 | Letter Combinations of a Phone Number | Python3(36ms) | O(4N) | O(4N) | |
| 18 | 4Sum | Python3(64ms) | O(N2) | O(N2) | |
| 19 | Remove Nth Node From End of List | Python3(32ms) | O(N) | O(1) | |
| 20 | Valid Parentheses | Python3(36ms) | O(N) | O(N) | |
| 21 | Merge Two Sorted Lists | Python3(40ms) | O(N1+N2) | O(1) | |
| 22 | Generate Parentheses | Python3(36ms) | O(N) | O(?) | |
| 23 | Merge k Sorted Lists | Python3(64ms) | O(N*logk) | O(1) | Python solution use heap to compare the lists, so reduce time to O(N logK) but increase space to O(k) |
| 24 | Swap Nodes in Pairs | Python3(28ms) | O(N) | O(1) | |
| 25 | Reverse Nodes in k-Group | Python3(48ms) | O(N) | O(1) | |
| 26 | Remove Duplicates from Sorted Array | Python3(52ms) | O(N) | O(1) | |
| 27 | Remove Element | Python3(28ms) | O(N) | O(1) | |
| 28 | Implement strStr() | Python3(32ms) | O(N+M) | O(1) | Use Knuth–Morris–Pratt Algorithm |
| 29 | Divide Two Integers | Python3(32ms) | O(N) | O(1) | |
| 30 | Substring with Concatenation of All Words | Python3(56ms) | O(N*M) | O(M) | |
| 31 | Next Permutation | Python3(36ms) | O(N) | O(1) | |
| 32 | Longest Valid Parentheses | Python3(48ms) | O(N) | O(1) | |
| 33 | Search in Rotated Sorted Array | Python3(28ms) | O(N) | O(1) | |
| 34 | Search for a Range | Python3(32ms) | O(LogN) | O(1) | |
| 35 | Search Insert Position | Python3(28ms) | O(LogN) | O(1) | |
| 36 | Valid Sudoku | Python3(44ms) | O(1) | O(1) | |
| 37 | Sudoku Solver | Python3(44ms) | O(1) | N(1) | |
| 38 | Count and Say | Python3(32ms) | O(N2) | O(N) | Python use an dictionary of answers |
| 39 | Combination Sum | Python3(52ms) | O(N!) | O(N) | |
| 40 | Combination Sum II | Python3(48ms) | O(N!) | O(N) | |
| 41 | First Missing Positive | Python3(36ms) | O(N) | O(1) | |
| 42 | Trapping Rain Water | Python3(32ms) | O(N) | O(1) | |
| 43 | Multiply Strings | Python3(84ms) | O(N*M) | O(N+M) | |
| 44 | Wildcard Matching | Python3(60ms) | O(N*M) | O(1) | Similar with Problem No. 10 |
| 45 | Jump Game II | Python3(40ms) | O(N) | O(1) | Use Greedy Algorithm |
| 46 | Permutations | Python3(44ms) | O(N!) | (N) | Get inspired by Heap's Algorithm |
| 47 | Permutations II | Python3(56ms) | O(N!) | (N) | Get inspired by Heap's Algorithm |
| 48 | Rotate Image | Python3(32ms) | O(N2) | O(1) | |
| 49 | Group Anagrams | Python3(108ms) | O(N K log K) | O(N K) | Linear algorithm will slower and cost more memory |
| 50 | Pow(x, n) | Python3(32ms) | O(LogN) | O(1) |
| # | Title | Solutions | Time | Space | Comments |
|---|---|---|---|---|---|
| 51 | N-Queens | Python3(60ms) | O(N!) | O(N) | |
| 52 | N-Queens II | Python3(44ms) | O(N!) | O(N) | |
| 53 | Maximum Subarray | Python3(36ms) | O(N) | O(1) | |
| 54 | Spiral Matrix | Python3(28ms) | O(N) | O(1) | |
| 55 | Jump Game | Python3(32ms) | O(N) | O(1) | Use Greedy Algorithm |
| 56 | Merge Intervals | Python3(40ms) | O(NLogN) | O(1) | |
| 57 | Insert Interval | Python3(40ms) | O(N) | O(N) | |
| 58 | Length of Last Word | Python3(32ms) | O(N) | O(1) | |
| 59 | Spiral Matrix II | Python3(36ms) | O(N2) | O(N2) | |
| 60 | Permutation Sequence | Python3(24ms) | O(N) | (N) | Use Cantor Expansion (Introduction to Algorithms, MIT) |
| 61 | Rotate List | Python3(36ms) | O(N) | O(1) | |
| 62 | Unique Paths | Python3(28ms) | O(Min(M, N)) | O(1) | Use dynamic programing will cost O(M*N) time and O(Min(M, N)) space |
| 63 | Unique Paths II | Python3(32ms) | O(M*N) | O(Min(M, N)) | |
| 64 | Minimum Path Sum | Python3(100ms) | O(M*N) | O(Min(M, N)) | Update grid to not use new space |
| 65 | Valid Number | Python3(36ms) | O(N) | O(1) | |
| 66 | Plus One | Python3(36ms) | O(N) | O(N) | |
| 67 | Add Binary | Python3(40ms) | O(N) | O(N) | |
| 68 | Text Justification | Python3(32ms) | O(N) | O(N) | |
| 69 | Sqrt(x) | Python3(36ms) | O(LogN) | O(1) | Use Newton–Raphson Method to computing square root |
| 70 | Climbing Stairs | Python3(28ms) | O(N) | O(1) | |
| 71 | Simplify Path | Python3(32ms) | O(N) | O(N) | |
| 72 | Edit Distance | Python3(128ms) | O(N*M) | O(Min(N,M)) | |
| 73 | Set Matrix Zeroes | Python3(148ms) | O(N*M) | O(N+M) | When use constant space, solution will slower |
| 74 | Search a 2D Matrix | Python3(76ms) | O(Log(N+M)) | O(1) | |
| 75 | Sort Colors | Python3(32ms) | O(N) | O(1) |
| # | Title | Solutions | Time | Space | Comments |
|---|---|---|---|---|---|
| 222 | Count Complete Tree Nodes | Python3(80ms) | O(log2N) | O(1) |
| # | Title | Solutions | Time | Space | Comments |
|---|---|---|---|---|---|
| 410 | Split Array Largest Sum | Python3(40ms) | O(N∗log(sum of array)) | O(1) | Binary Search |
| # | Title | Solutions | Time | Space | Comments |
|---|---|---|---|---|---|
| 482 | License Key Formatting | Python3(36ms) | O(N) | O(N) |
| # | Title | Solutions | Time | Space | Comments |
|---|---|---|---|---|---|
| 843 | Guess the Word | Python3(36ms) | O(N2) | O(N) |
| # | Title | Solutions | Time | Space | Comments |
|---|---|---|---|---|---|
| 1007 | Minimum Domino Rotations For Equal Row | Python3(1248ms) | O(N) | O(1) |
| # | Title | Solutions | Time | Space | Comments |
|---|---|---|---|---|---|
| 1057 | Campus Bikes | Python3(724ms) | O(N*M) | O(N*M) | |
| 1096 | Brace Expansion II | Python3(48ms) | O(N) | ? |
| # | Title | Solutions | Time | Space | Comments |
|---|---|---|---|---|---|
| 1197 | Minimum Knight Moves | Python3(36ms) | O(N2) | O(N2) |