LeetCode by Swift
[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 and the code style is strictly follow RayWenderlich Swift Style Guide. Please feel free to reference and STAR to support this repo, thank you!
Data Structures
Companies
Array
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Summary Ranges | Swift | Medium | O(n) | O(n) |
Intersection of Two Arrays | Swift | Easy | O(n) | O(n) |
Intersection of Two Arrays II | Swift | Easy | O(nlogn) | O(n) |
Contains Duplicate | Swift | Easy | O(n) | O(n) |
Contains Duplicate II | Swift | Easy | O(n) | O(n) |
Remove Duplicates from Sorted Array | Swift | Easy | O(n) | O(1) |
Remove Duplicates from Sorted Array II | Swift | Medium | O(n) | O(1) |
Move Zeroes | Swift | Easy | O(n) | O(1) |
Remove Element | Swift | Easy | O(n) | O(1) |
Two Sum | Swift | Easy | O(n) | O(n) |
3Sum | Swift | Medium | O(n^2) | O(n) |
4Sum | Swift | Medium | O(n^3) | O(n) |
Maximum Size Subarray Sum Equals k | Swift | Easy | O(n) | O(n) |
Product of Array Except Self | Swift | Medium | O(n) | O(n) |
Rotate Array | Swift | Easy | O(n) | O(1) |
Rotate Image | Swift | Medium | O(n^2) | O(1) |
Spiral Matrix | Swift | Medium | O(n^2) | O(1) |
Spiral Matrix II | Swift | Medium | O(n^2) | O(1) |
Valid Sudoku | Swift | Easy | O(n^2) | O(n) |
Sliding Window Maximum | Swift | Hard | O(n) | O(n) |
String
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
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) |
Palindrome Permutation | Swift | Easy | O(n) | O(n) |
Valid Anagram | Swift | Easy | O(nlogn) | O(1) |
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) |
Text Justification | Swift | Hard | O(n^2) | O(n) |
Linked List
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) |
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) |
Stack
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Valid Parentheses | Swift | Easy | O(n) | O(n) |
Evaluate Reverse Polish Notation | Swift | Medium | O(n) | O(n) |
Simplify Path | 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) |
Tree
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Same Tree | Swift | Easy | O(n) | O(1) |
Symmetric Tree | Swift | Easy | O(n) | O(1) |
Invert Binary Tree | Swift | Easy | O(n) | O(1) |
Minimum Depth of Binary Tree | Swift | Easy | O(n) | O(1) |
Maximum Depth of Binary Tree | Swift | Easy | O(n) | O(1) |
Balanced Binary Tree | Swift | Easy | O(n) | O(1) |
Validate Binary Search Tree | Swift | Medium | O(n) | O(1) |
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) |
Construct Binary Tree from Preorder and Inorder Traversal | Swift | Medium | O(n) | O(1) |
Construct Binary Tree from Inorder and Postorder Traversal | Swift | Medium | O(n) | O(1) |
Path Sum | Swift | Easy | O(n) | O(1) |
Path Sum II | Swift | Medium | O(n) | O(1) |
Dynamic programming
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) |
Best Time to Buy and Sell Stock | Swift | Easy | O(n) | O(1) |
Coin Change | Swift | Medium | O(n^2) | O(n) |
Longest Increasing Subsequence | Swift | Medium | O(n^2) | O(n) |
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) |
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) |
Depth-first search
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) |
Number of Islands | Swift | Medium | O((n^2)!) | O(1) |
Word Search | Swift | Medium | O((n^2)!) | O(n^2) |
Math
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Add Binary | Swift | Easy | O(n) | O(n) |
Add Two Numbers | Swift | Medium | O(n) | O(1) |
Plus One | Swift | Easy | O(n) | O(1) |
Integer Break | Swift | Medium | O(logn) | O(1) |
Happy Number | Swift | Easy | O(n) | O(n) |
Single Number | Swift | Medium | O(n) | O(1) |
Ugly Number | Swift | Easy | O(logn) | O(1) |
Ugly Number II | Swift | Medium | O(n) | O(n) |
Super Ugly Number | Swift | Medium | O(n^2) | O(n) |
String to Integer (atoi) | Swift | Easy | O(n) | O(1) |
Pow(x, n) | Swift | Medium | O(logn) | O(1) |
Power of Two | Swift | Easy | O(1) | O(1) |
Power of Three | Swift | Easy | O(1) | O(1) |
Sum of Two Integers | Swift | Easy | O(n) | O(1) |
Excel Sheet Column Number | Swift | Easy | O(n) | O(1) |
Roman to Integer | Swift | Easy | O(n) | O(n) |
Search
Title | Solution | Difficulty | Time | Space |
---|---|---|---|---|
Closest Binary Search Tree Value | Swift | Easy | O(logn) | O(1) |
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) |
Sort
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) |
Top K Frequent Elements | Swift | Medium | O(nlogn) | O(n) |
Meeting Rooms | Swift | Easy | O(nlogn) | O(1) |
Merge Intervals | Swift | Hard | 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 | ★★★ |
Merge k Sorted Lists | Swift | Hard | ★★ |
Find Peak Element | Swift | Medium | ★★ |
Spiral Matrix | Swift | Medium | ★★ |
Sliding Window Maximum | Swift | Hard | ★★ |
Power of Two | Swift | Easy | ★★ |
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 | ★★★ |
Subsets | 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 | ★★★ |
Microsoft
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 | ★★★ |