[LeetCode Online Judge] (https://leetcode.com/) is a website containing many algorithm questions. Most of them are real interview questions of Google, Facebook, LinkedIn, Apple, etc. This repo shows my solutions by Swift with the code style strictly follows the RayWenderlich Swift Style Guide. Please feel free to reference and STAR to support this repo, thank you!
- Array
- String
- Linked List
- Stack
- Tree
- Dynamic programming
- Depth-first search
- Math
- Search
- Sort
- Union Find
Problem Status shows the latest progress to all 400+ questions. Currently we have 191 completed solutions. Note: questions with ♥ mark means that you have to Subscript to premium membership of LeetCode to unlock them. Thank you for great contributions from CharleneJiang, ReadmeCritic, demonkoo, DaiYue, and jindulys.
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Valid Palindrome | Swift | Easy | O(n) | O(n) |
Count and Say | Swift | Easy | O(n^2) | O(n) |
Flip Game | Swift | Easy | O(n) | O(n) |
Implement strStr() | Swift | Easy | O(nm) | O(n) |
Isomorphic Strings | Swift | Easy | O(n) | O(n) |
Reverse String | Swift | Easy | O(n) | O(n) |
Reverse Vowels of a String | Swift | Easy | O(n) | O(n) |
Length of Last Word | Swift | Easy | O(n) | O(n) |
Add Strings | Swift | Easy | O(n) | O(1) |
Multiply Strings | Swift | Medium | O(n) | O(1) |
Palindrome Permutation | Swift | Easy | O(n) | O(n) |
Valid Anagram | Swift | Easy | O(nlogn) | O(1) |
Ransom Note | Swift | Easy | O(n) | O(n) |
Group Anagrams | Swift | Medium | O(nmlogm + nlogn) | O(n) |
Longest Common Prefix | Swift | Easy | O(nm) | O(m) |
Longest Substring Without Repeating Characters | Swift | Medium | O(n) | O(n) |
One Edit Distance | Swift | Medium | O(n) | O(n) |
Word Pattern | Swift | Easy | O(n) | O(n) |
Minimum Window Substring | Swift | Hard | O(n^2) | O(n) |
Text Justification | Swift | Hard | O(n^2) | O(n) |
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Reverse Linked List | Swift | Easy | O(n) | O(1) |
Palindrome Linked List | Swift | Easy | O(n) | O(1) |
Swap Nodes in Pairs | Swift | Easy | O(n) | O(1) |
Remove Linked List Elements | Swift | Easy | O(n) | O(1) |
Remove Duplicates from Sorted List | Swift | Easy | O(n) | O(1) |
Remove Duplicates from Sorted List II | Swift | Medium | O(n) | O(1) |
Remove Nth Node From End of List | Swift | Easy | O(n) | O(1) |
Odd Even Linked List | Swift | Medium | O(n) | O(1) |
Rotate List | Swift | Medium | O(n) | O(1) |
Reorder List | Swift | Medium | O(n) | O(1) |
Merge Two Sorted Lists | Swift | Easy | O(n) | O(1) |
Merge k Sorted Lists | Swift | Hard | O(mlogn) | O(1) |
Partition List | Swift | Medium | O(n) | O(1) |
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Valid Parentheses | Swift | Easy | O(n) | O(n) |
Longest Valid Parentheses | Swift | Hard | O(n) | O(n) |
Evaluate Reverse Polish Notation | Swift | Medium | O(n) | O(n) |
Simplify Path | Swift | Medium | O(n) | O(n) |
Remove K Digits | Swift | Medium | O(n) | O(n) |
Ternary Expression Parser | Swift | Medium | O(n) | O(n) |
Binary Tree Preorder Traversal | Swift | Medium | O(n) | O(n) |
Binary Tree Inorder Traversal | Swift | Medium | O(n) | O(n) |
Binary Tree Postorder Traversal | Swift | Hard | O(n) | O(n) |
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Same Tree | Swift | Easy | O(n) | O(n) |
Symmetric Tree | Swift | Easy | O(n) | O(n) |
Invert Binary Tree | Swift | Easy | O(n) | O(n) |
Binary Tree Upside Down | Swift | Medium | O(n) | O(1) |
Minimum Depth of Binary Tree | Swift | Easy | O(n) | O(n) |
Maximum Depth of Binary Tree | Swift | Easy | O(n) | O(n) |
Balanced Binary Tree | Swift | Easy | O(n) | O(n) |
Sum of Left Leaves | Swift | Easy | O(n) | O(1) |
Validate Binary Search Tree | Swift | Medium | O(n) | O(n) |
Binary Tree Level Order Traversal | Swift | Easy | O(n) | O(n) |
Binary Tree Level Order Traversal II | Swift | Easy | O(n) | O(n) |
Binary Tree Zigzag Level Order Traversal | Swift | Medium | O(n) | O(n) |
Binary Tree Right Side View | Swift | Medium | O(n) | O(n) |
Construct Binary Tree from Preorder and Inorder Traversal | Swift | Medium | O(n) | O(n) |
Construct Binary Tree from Inorder and Postorder Traversal | Swift | Medium | O(n) | O(n) |
Path Sum | Swift | Easy | O(n) | O(n) |
Path Sum II | Swift | Medium | O(n) | O(n) |
Path Sum III | Swift | Easy | O(n^2) | O(1) |
Recover Binary Search Tree | Swift | Hard | O(n) | O(1) |
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Nested List Weight Sum | Swift | Easy | O(n) | O(1) |
Climbing Stairs | Swift | Easy | O(n) | O(1) |
Unique Paths | Swift | Medium | O(mn) | O(mn) |
Unique Paths II | Swift | Medium | O(mn) | O(mn) |
Decode Ways | Swift | O(n) | O(n) | |
Minimum Path Sum | Swift | Medium | O(mn) | O(mn) |
Generate Parentheses | Swift | Medium | O(n^2) | O(n) |
Best Time to Buy and Sell Stock | Swift | Easy | O(n) | O(1) |
Best Time to Buy and Sell Stock III | Swift | Hard | O(n) | O(n) |
Coin Change | Swift | Medium | O(n^2) | O(n) |
Longest Increasing Subsequence | Swift | Medium | O(n^2) | O(n) |
Longest Palindromic Substring | Swift | Medium | O(n^2) | O(n^2) |
Perfect Squares | Swift | Medium | O(n^2) | O(n) |
House Robber | Swift | Easy | O(n) | O(1) |
House Robber II | Swift | Medium | O(n) | O(1) |
Paint Fence | Swift | Easy | O(n) | O(n) |
Maximum Subarray | Swift | Medium | O(n) | O(1) |
Maximum Product Subarray | Swift | Medium | O(n) | O(1) |
Maximal Square | Swift | Medium | O(mn) | O(mn) |
Edit Distance | Swift | Hard | O(mn) | O(mn) |
Combination Sum IV | Swift | Medium | O(2^n) | O(n) |
Triangle | Swift | Medium | O(2^n - 1) | O(m) |
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Permutations | Swift | Medium | O(n!) | O(n) |
Permutations II | Swift | Medium | O(n!) | O(n) |
Subsets | Swift | Medium | O(n!) | O(n) |
Subsets II | Swift | Medium | O(n!) | O(n) |
Combinations | Swift | Medium | O(n!) | O(n) |
Combination Sum | Swift | Medium | O(n^n) | O(2^n - 1) |
Combination Sum II | Swift | Medium | O(n!) | O(2^n - 2) |
Combination Sum III | Swift | Medium | O(n!) | O(nCk) |
Letter Combinations of a Phone Number | Swift | Medium | O(mn) | O(n) |
Factor Combinations | Swift | Medium | O(n^n)) | O(2^n - 1) |
Generalized Abbreviation | Swift | Medium | O(n!) | O(2^n) |
Number of Islands | Swift | Medium | O((mn)^2) | O(1) |
Walls and Gates | Swift | Medium | O(n!) | O(2^n) |
Word Search | Swift | Medium | O((n^2)!) | O(n^2) |
Word Search II | Swift | Hard | O(((mn)^2)) | O(n^2) |
N-Queens | Swift | Hard | O((n^4)) | O(n^2) |
N-Queens II | Swift | Hard | O((n^3)) | O(n) |
Sudoku Solver | Swift | Hard | O(n^4) | O(1) |
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Closest Binary Search Tree Value | Swift | Easy | O(logn) | O(1) |
Closest Binary Search Tree Value II | Swift | Hard | O(n) | O(n) |
Search in Rotated Sorted Array | Swift | Hard | O(logn) | O(1) |
Search in Rotated Sorted Array II | Swift | Medium | O(logn) | O(1) |
Find Minimum in Rotated Sorted Array | Swift | Medium | O(logn) | O(1) |
Find Minimum in Rotated Sorted Array II | Swift | Hard | O(logn) | O(1) |
Search for a Range | Swift | Medium | O(logn) | O(1) |
Search Insert Position | Swift | Medium | O(logn) | O(1) |
Find Peak Element | Swift | Medium | O(logn) | O(1) |
Sqrt(x) | Swift | Medium | O(logn) | O(1) |
Median of Two Sorted Arrays | Swift | Hard | O(log(m + n)) | O(1) |
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Sort Colors | Swift | Medium | O(n) | O(1) |
Wiggle Sort | Swift | Medium | O(n) | O(1) |
Wiggle Sort II | Swift | Medium | O(nlogn) | O(n) |
Sort Transformed Array | Swift | Medium | O(n) | O(1) |
Top K Frequent Elements | Swift | Medium | O(nlogn) | O(n) |
Meeting Rooms | Swift | Easy | O(nlogn) | O(1) |
Meeting Rooms II | Swift | Medium | O(nlogn) | O(n) |
Merge Intervals | Swift | Hard | O(nlogn) | O(n) |
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Number of Connected Components in an Undirected Graph | Swift | Medium | O(nlogn) | O(n) |
Graph Valid Tree | Swift | Medium | O(nlogn) | O(n) |
Title | Solution | Difficulty | Frequency |
---|---|---|---|
Plus One | Swift | Easy | ★★★★★★ |
Number of Islands | Swift | Medium | ★★★★ |
Summary Ranges | Swift | Medium | ★★★★ |
Perfect Squares | Swift | Medium | ★★★★ |
Merge Intervals | Swift | Hard | ★★★ |
Valid Parentheses | Swift | Easy | ★★★ |
Trapping Rain Water | Swift | Hard | ★★ |
Merge k Sorted Lists | Swift | Hard | ★★ |
Longest Consecutive Sequence | Swift | Hard | ★★ |
Find Peak Element | Swift | Medium | ★★ |
Power of Two | Swift | Easy | ★★ |
Spiral Matrix | Swift | Medium | ★★ |
Sliding Window Maximum | Swift | Hard | ★★ |
Pow(x, n) | Swift | Medium | ★★ |
Letter Combinations of a Phone Number | Swift | Medium | ★★ |
Title | Solution | Difficulty | Frequency |
---|---|---|---|
3Sum | Swift | Medium | ★★★★★★ |
Move Zeroes | Swift | Easy | ★★★★★★ |
Add Binary | Swift | Easy | ★★★★★ |
Two Sum | Swift | Easy | ★★★★★ |
Letter Combinations of a Phone Number | Swift | Medium | ★★★★ |
Merge k Sorted Lists | Swift | Hard | ★★★★ |
Reverse Linked List | Swift | Easy | ★★★ |
Merge Intervals | Swift | Hard | ★★★ |
Number of Islands | Swift | Medium | ★★★ |
Reverse Linked List | Swift | Easy | ★★★ |
Subsets | Swift | Medium | ★★★ |
Sort Colors | Swift | Medium | ★★ |
Title | Solution | Difficulty | Frequency |
---|---|---|---|
Game of Life | Medium | ★★★★★★ | |
Meeting Rooms II | Swift | Medium | ★★★★★★ |
Remove K Digits | Swift | Medium | ★ |
Ternary Expression Parser | Swift | Medium | ★ |
Title | Solution | Difficulty | Frequency |
---|---|---|---|
Valid Sudoku | Swift | Easy | ★★★★ |
Spiral Matrix | Swift | Medium | ★★★★ |
Letter Combinations of a Phone Number | Swift | Medium | ★★★★ |
Group Anagrams | Swift | Medium | ★★★★ |
Word Pattern | Swift | Easy | ★★★ |
Roman to Integer | Swift | Easy | ★★★ |
Combination Sum | Swift | Medium | ★★ |
Title | Solution | Difficulty | Frequency |
---|---|---|---|
Two Sum | Swift | Easy | ★★★★★ |
Text Justification | Swift | Hard | ★★★★ |
House Robber | Swift | Easy | ★★ |
Single Number | Swift | Medium | ★★ |
Word Search II | Swift | Hard | ★★ |
Add Two Numbers | Swift | Medium | ★★ |
Title | Solution | Difficulty | Frequency |
---|---|---|---|
Maximum Subarray | Swift | Medium | ★★★★★★ |
Pow(x, n) | Swift | Medium | ★★★★★★ |
Merge Intervals | Swift | Hard | ★★★★★★ |
Isomorphic Strings | Swift | Easy | ★★★★★★ |
Search in Rotated Sorted Array | Swift | Hard | ★★★★★ |
Search for a Range | Swift | Medium | ★★★★★ |
Two Sum | Swift | Easy | ★★★★ |
Binary Tree Level Order Traversal | Swift | Easy | ★★★★ |
Evaluate Reverse Polish Notation | Swift | Medium | ★★★ |
Maximum Product Subarray | Swift | Medium | ★★★ |
Product of Array Except Self | Swift | Medium | ★★★ |
Symmetric Tree | Swift | Easy | ★★ |
Title | Solution | Difficulty | Frequency |
---|---|---|---|
Two Sum | Swift | Easy | ★★★★★★ |
Number of Islands | Swift | Medium | ★★ |
Add Two Numbers | Swift | Medium | ★★ |
Reverse Linked List | Swift | Easy | ★★ |
Valid Parentheses | Swift | Easy | ★★ |
Longest Palindromic Substring | Swift | Medium | ★★ |
Trapping Rain Water | Swift | Hard | ★★ |
Longest Substring Without Repeating Characters | Swift | Medium | ★★ |
Letter Combinations of a Phone Number | Swift | Medium | ★★ |
Valid Anagram | Swift | Easy | ★★ |
Rotate Image | Swift | Medium | ★★ |
Best Time to Buy and Sell Stock | Swift | Easy | ★★ |
3Sum | Swift | Medium | ★★ |
Sliding Window Maximum | Swift | Hard | ★★ |
Title | Solution | Difficulty | Frequency |
---|---|---|---|
Reverse Linked List | Swift | Easy | ★★★★★★ |
Two Sum | Swift | Easy | ★★★★★ |
String to Integer (atoi) | Swift | Easy | ★★★★ |
Add Two Numbers | Swift | Medium | ★★★★ |
Excel Sheet Column Number | Swift | Easy | ★★★★ |
Validate Binary Search Tree | Swift | Medium | ★★★ |
Merge Two Sorted Lists | Swift | Easy | ★★★ |