Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

583 Commits

Repository files navigation

LeetCode

Up to date (2015-02-24), there are total 189 problems on LeetCode Online Judge. The number of problems is increasing recently. Here is the classification of all 189 problems. I'll keep updating for full summary and better solutions. Stay tuned for updates.


Algorithm

Database


##Bit Manipulation

ProblemSolutionTimeSpaceDifficultyNotes
Single Numbersingle-number.pyO(n)O(1)Medium
Single Number IIsingle-number-ii.pyO(n)O(1)Medium

##Array

ProblemSolutionTimeSpaceDifficultyNotes
3 Sum3sum.pyO(n^2)O(1)Medium
3 Sum Closest3sum-closest.pyO(n^2)O(1)Medium
Best Time to Buy and Sell Stockbest-time-to-buy-and-sell-stock.pyO(n)O(1)Medium
First Missing Positivefirst-missing-positive.pyO(n)O(1)HardTricky
Longest Consecutive Sequencelongest-consecutive-sequence.pyO(n)O(n)HardTricky
Majority Elementmajority-element.pyO(n)O(1)Easy
Missing Rangesmissing-ranges.pyO(n)O(1)Medium
Next Permutationnext-permutation.pyO(n)O(1)MediumTricky
Pascal's Trianglepascals-triangle.pyO(n^2)O(n)Easy
Pascal's Triangle IIpascals-triangle-ii.pyO(n^2)O(n)Easy
Plus Oneplus-one.pyO(n)O(1)Easy
Read N Characters Given Read4read-n-characters-given-read4.pyO(n)O(1)Easy
Read N Characters Given Read4 II - Call multiple timesread-n-characters-given-read4-ii-call-multiple-times.pyO(n)O(1)Hard
Remove Duplicates from Sorted Arrayremove-duplicates-from-sorted-array.pyO(n)O(1)Easy
Remove Duplicates from Sorted Array IIremove-duplicates-from-sorted-array-ii.pyO(n)O(1)Medium
Remove Elementremove-element.pyO(n)O(1)Easy
Rotate Arrayrotate-array.pyO(n)O(1)Easy
Rotate Imagerotate-image.pyO(n^2)O(1)Medium
Set Matrix Zeroesset-matrix-zeroes.pyO(m * n)O(1)Medium
Spiral Matrixspiral-matrix.pyO(m * n)O(1)Medium
Spiral Matrix IIspiral-matrix-ii.pyO(m * n)O(1)Medium

##String

ProblemSolutionTimeSpaceDifficultyNotes
Add Binaryadd-binary.pyO(n)O(1)Easy
Compare Version Numberscompare-version-numbers.pyO(n)O(1)Easy
Count and Saycount-and-say.pyO(n * 2^n)O(2^n)Easy
Implement strStr()implement-strstr.pyO(n + m)O(m)EasyKMP Algorithm
Length of Last Wordlength-of-last-word.pyO(n)O(1)Easy
Longest Common Prefixlongest-common-prefix.pyO(n1 + n2 + ...)O(1)Easy
Longest Palindromic Substringlongest-palindromic-substring.pyO(n)O(n)MediumManacher's Algorithm
Multiply Stringsmultiply-strings.pyO(m * n)O(m + n)Medium
One Edit Distanceone-edit-distance.pyO(m + n)O(1)Medium
Reverse Words in a Stringreverse-words-in-a-string.pyO(n)O(n)Medium
Reverse Words in a String IIreverse-words-in-a-string-ii.pyO(n)O(1)Medium
String to Integer (atoi)string-to-integer-atoi.pyO(n)O(1)Easy
Text Justificationtext-justification.pyO(n)O(1)Hard
Valid Palindromevalid-palindrome.pyO(n)O(1)Easy
ZigZag Conversionzigzag-conversion.pyO(n)O(1)Easy

##Linked List

ProblemSolutionTimeSpaceDifficultyNotes
Add Two Numbersadd-two-numbers.pyO(n)O(1)Medium
Copy List with Random Pointercopy-list-with-random-pointer.pyO(n)O(1)Hard
Intersection of Two Linked Listsintersection-of-two-linked-lists.pyO(m + n)O(1)Easy
Remove Duplicates from Sorted Listremove-duplicates-from-sorted-list.pyO(n)O(1)Easy
Remove Duplicates from Sorted List IIremove-duplicates-from-sorted-list-ii.pyO(n)O(1)Medium
Reverse Linked List IIreverse-linked-list-ii.pyO(n)O(1)Medium
Reverse Nodes in k-Groupreverse-nodes-in-k-group.pyO(n)O(1)Hard
Rotate Listrotate-list.pyO(n)O(1)Medium
Swap Nodes in Pairsswap-nodes-in-pairs.pyO(n)O(1)Medium

##Stack

ProblemSolutionTimeSpaceDifficultyNotes
Binary Search Tree Iteratorbinary-search-tree-iterator.pyO(1)O(h)Medium
Evaluate Reverse Polish Notationevaluate-reverse-polish-notation.pyO(n)O(n)Medium
Longest Valid Parentheseslongest-valid-parentheses.pyO(n)O(1)Hard
Min Stackmin-stack.pyO(n)O(1)Easy
Simplify Pathsimplify-path.pyO(n)O(n)Medium
Symmetric Treesymmetric-tree.pyO(n)O(h)Easy
Valid Parenthesesvalid-parentheses.pyO(n)O(n)Easy

##Heap

ProblemSolutionTimeSpaceDifficultyNotes
Merge k Sorted Listsmerge-k-sorted-lists.pyO(nlogk)O(1)Hard

##Tree

ProblemSolutionTimeSpaceDifficultyNotes
Binary Tree Preorder Traversalbinary-tree-preorder-traversal.pyO(n)O(1)MediumMorris Traversal
Binary Tree Inorder Traversalbinary-tree-inorder-traversal.pyO(n)O(1)MediumMorris Traversal
Binary Tree Postorder Traversalbinary-tree-postorder-traversal.pyO(n)O(1)HardMorris Traversal
Recover Binary Search Treerecover-binary-search-tree.pyO(n)O(1)HardMorris Traversal

##Hash Table

ProblemSolutionTimeSpaceDifficultyNotes
4 Sum4sum.pyO(n^2) ~ O(n^4)O(n^2)Medium
Anagramsanagrams.pyO(n)O(n)Medium
Longest Substring with At Most Two Distinct Characterslongest-substring-with-at-most-two-distinct-characters.pyO(n^2)O(1)Hard
Longest Substring Without Repeating Characterslongest-substring-without-repeating-characters.pyO(n)O(1)Medium
Max Points on a Linemax-points-on-a-line.pyO(n^2)O(n)Hard
Minimum Window Substringminimum-window-substring.pyO(n)O(k)Hard
Repeated DNA Sequencesrepeated-dna-sequences.pyO(n)O(n)Medium
Substring with Concatenation of All Wordssubstring-with-concatenation-of-all-words.pyO(m * n * k)O(n * k)Hard
Two Sumtwo-sum.pyO(n)O(n)Medium
Two Sum III - Data structure designtwo-sum-iii-data-structure-design.pyO(n)O(n)Easy
Valid Sudokuvalid-sudoku.pyO(n^2)O(n)Easy

##Data Structure

ProblemSolutionTimeSpaceDifficultyNotes
LRU Cachelru-cache.pyO(1)O(n)Hard

##Math

ProblemSolutionTimeSpaceDifficultyNotes
Divide Two Integersdivide-two-integers.pyO(logn)O(1)Medium
Excel Sheet Column Titleexcel-sheet-column-title.pyO(logn)O(1)Easy
Excel Sheet Column Numberexcel-sheet-column-number.pyO(n)O(1)Easy
Factorial Trailing Zeroesfactorial-trailing-zeroes.pyO(logn)O(1)Easy
Fraction to Recurring Decimalfraction-to-recurring-decimal.pyO(logn)O(1)Medium
Gray Codegray-code.pyO(2^n)O(1)Medium
Integer to Romaninteger-to-roman.pyO(n)O(1)Medium
Palindrome Numberpalindrome-number.pyO(1)O(1)Easy
Permutation Sequencepermutation-sequence.pyO(n)O(1)MediumCantor Ordering
Reverse Integerreverse-integer.pyO(logn)O(1)Easy
Roman to Integerroman-to-integer.pyO(n)O(1)Easy
Valid Numbervalid-number.pyO(n)O(1)HardAutomata

##Sort

ProblemSolutionTimeSpaceDifficultyNotes
Insert Intervalinsert-interval.pyO(n)O(1)Hard
Insertion Sort Listinsertion-sort-list.pyO(n^2)O(1)Medium
Largest Numberlargest-number.pyO(n^2)O(n)Medium
Maximum Gapmaximum-gap.pyO(n)O(n)HardTricky
Merge Intervalsmerge-intervals.pyO(nlogn)O(1)Hard
Merge Sorted Arraymerge-sorted-array.pyO(n)O(1)Easy
Merge Two Sorted Listsmerge-two-sorted-lists.pyO(n)O(1)Easy
Sort Colorssort-colors.pyO(n)O(1)Medium
Sort Listsort-list.pyO(nlogn)O(logn)Medium

##Two Pointer

ProblemSolutionTimeSpaceDifficultyNotes
Linked List Cyclelinked-list-cycle.pyO(n)O(1)Medium
Linked List Cycle IIlinked-list-cycle-ii.pyO(n)O(1)Medium
Partition Listpartition-list.pyO(n)O(1)Medium
Remove Nth Node From End of Listremove-nth-node-from-end-of-list.pyO(n)O(1)Easy
Reorder Listreorder-list.pyO(n)O(1)Medium
Two Sum II - Input array is sortedtwo-sum-ii-input-array-is-sorted.pyO(n)O(1)Medium

##Brute Force Search

ProblemSolutionTimeSpaceDifficultyNotes
Letter Combinations of a Phone Numberletter-combinations-of-a-phone-number.pyO(n * 4^n)O(n)Medium
Permutationspermutations.pyO(n!)O(n)Medium
Permutations IIpermutations-ii.pyO(n!)O(n)Hard
Subsetssubsets.pyO(n * 2^n)O(1)Medium
Subsets IIsubsets-ii.pyO(n * 2^n)O(1)Medium

##Divide and Conquer

ProblemSolutionTimeSpaceDifficultyNotes
Balanced Binary Treebalanced-binary-tree.pyO(n)O(h)Easy
Binary Tree Maximum Path Sumbinary-tree-maximum-path-sum.pyO(n)O(h)Hard
Binary Tree Upside Downbinary-tree-upside-down.pyO(n)O(1)Medium
Construct Binary Tree from Inorder and Postorder Traversalconstruct-binary-tree-from-inorder-and-postorder-traversal.pyO(n)O(n)Medium
Construct Binary Tree from Preorder and Inorder Traversalconstruct-binary-tree-from-preorder-and-inorder-traversal.pyO(n)O(n)Medium
Convert Sorted Array to Binary Search Treeconvert-sorted-array-to-binary-search-tree.pyO(n)O(logn)Medium
Convert Sorted List to Binary Search Treeconvert-sorted-list-to-binary-search-tree.pyO(n)O(logn)Medium
Flatten Binary Tree to Linked Listflatten-binary-tree-to-linked-list.pyO(n)O(h)Medium
Maximum Depth of Binary Treemaximum-depth-of-binary-tree.pyO(n)O(h)Easy
Minimum Depth of Binary Treeminimum-depth-of-binary-tree.pyO(n)O(h)Easy
Populating Next Right Pointers in Each Nodepopulating-next-right-pointers-in-each-node.pyO(n)O(1)Medium
Same Treesame-tree.pyO(n)O(h)Easy
Sum Root to Leaf Numberssum-root-to-leaf-numbers.pyO(n)O(h)Medium
Unique Binary Search Trees IIunique-binary-search-trees-ii.pyO(4^n / n^(3/2)O(4^n / n^(3/2)Medium
Validate Binary Search Treevalidate-binary-search-tree.pyO(n)O(1)Medium

##Binary Search

ProblemSolutionTimeSpaceDifficultyNotes
Find Minimum in Rotated Sorted Arrayfind-minimum-in-rotated-sorted-array.pyO(logn)O(1)Medium
Find Minimum in Rotated Sorted Array IIfind-minimum-in-rotated-sorted-array-ii.pyO(logn) ~ O(n)O(1)Hard
Find Peak Elementfind-peak-element.pyO(logn)O(1)Medium
Median of Two Sorted Arraysmedian-of-two-sorted-arrays.pyO(log(m + n)O(1)Hard
Pow(x, n)powx-n.pyO(logn)O(logn)Medium
Search a 2D Matrixsearch-a-2d-matrix.pyO(log m + logn)O(1)Medium
Search for a Rangesearch-for-a-range.pyO(logn)O(1)Medium
Search in Rotated Sorted Arraysearch-in-rotated-sorted-array.pyO(logn)O(1)Hard
Search in Rotated Sorted Array IIsearch-in-rotated-sorted-array-ii.pyO(logn)O(1)Medium
Search Insert Positionsearch-insert-position.pyO(logn)O(1)Medium
Sqrt(x)sqrtx.pyO(logn)O(1)Medium

##Breadth-First Search

ProblemSolutionTimeSpaceDifficultyNotes
Binary Tree Level Order Traversalbinary-tree-level-order-traversal.pyO(n)O(n)Easy
Binary Tree Level Order Traversal IIbinary-tree-level-order-traversal-ii.pyO(n)O(n)Easy
Binary Tree Zigzag Level Order Traversalbinary-tree-zigzag-level-order-traversal.pyO(n)O(n)Medium
Clone Graphclone-graph.pyO(n)O(n)Medium
Populating Next Right Pointers in Each Node IIpopulating-next-right-pointers-in-each-node-ii.pyO(n)O(1)Hard
Surrounded Regionssurrounded-regions.pyO(m * n)O(m + n)Medium
Word Ladderword-ladder.pyO(n * d)O(d)Medium

##Depth-First Search

ProblemSolutionTimeSpaceDifficultyNotes
Combination Sumcombination-sum.pyO(n^m)O(m)Medium
Combination Sum IIcombination-sum-ii.pyO(n! / m!(n-m)!)O(m)Medium
Combinationscombinations.pyO(n!)O(n)Medium
Generate Parenthesesgenerate-parentheses.pyO(4^n / n^(3/2))O(n)Medium
N-Queensn-queens.pyO(n!)O(n)Hard
N-Queens-IIn-queens-ii.pyO(n!)O(n)Hard
Palindrome Partitioningpalindrome-partitioning.pyO(n^2) ~ O(2^n)O(n^2)Medium
Path Sumpath-sum.pyO(n)O(h)Easy
Path Sum IIpath-sum-ii.pyO(n)O(h)Medium
Restore IP Addressesrestore-ip-addresses.pyO(n^m) ~ O(3^4)O(n * m) ~ O(3 * 4)Medium
Sudoku Solversudoku-solver.pyO((9!)^9)O(1)Hard
Word Searchword-search.pyO(m * n * 3^p)O(m * n * p)Medium

##Dynamic Programming

ProblemSolutionTimeSpaceDifficultyNotes
Best Time to Buy and Sell Stock IIIbest-time-to-buy-and-sell-stock-iii.pyO(n)O(1)Hard
Best Time to Buy and Sell Stock IVbest-time-to-buy-and-sell-stock-iv.pyO(k * n)O(k)Hard
Climbing Stairsclimbing-stairs.pyO(n)O(1)Easy
Decode Waysdecode-ways.pyO(n)O(1)Medium
Distinct Subsequencesdistinct-subsequences.pyO(n^2)O(n)Hard
Dungeon Gamedungeon-game.pyO(m * n)O(m + n)Hard
Edit Distanceedit-distance.pyO(m * n)O(m + n)Hard
Interleaving Stringinterleaving-string.pyO(m * n)O(m + n)Hard
Maximal Rectanglemaximal-rectangle.pyO(n^2)O(n)Hard
Maximum Product Subarraymaximum-product-subarray.pyO(n)O(1)Medium
Maximum Subarraymaximum-subarray.pyO(n)O(1)Medium
Minimum Path Summinimum-path-sum.pyO(m * n)O(m + n)Medium
Palindrome Partitioning IIpalindrome-partitioning-ii.pyO(n^2)O(n^2)Hard
Regular Expression Matchingregular-expression-matching.pyO(m * n)O(n)Hard
Scramble Stringscramble-string.pyO(n^4)O(n^3)Hard
Triangletriangle.pyO(m * n)O(n)Medium
Unique Binary Search Treesunique-binary-search-trees.pyO(n^2)O(n)Medium
Unique Pathsunique-paths.pyO(m * n)O(m + n)Medium
Unique Paths IIunique-paths-ii.pyO(m * n)O(m + n)Medium
Word Breakword-break.pyO(n^2)O(n)Medium
Word Break IIword-break-ii.pyO(n^2)O(n)Hard

##Backtracking

ProblemSolutionTimeSpaceDifficultyNotes
Word Ladder IIword-ladder-ii.pyO(n * d)O(d)Hard

##Greedy

ProblemSolutionTimeSpaceDifficultyNotes
Best Time to Buy and Sell Stock IIbest-time-to-buy-and-sell-stock-ii.pyO(n)O(1)Medium
Candycandy.pyO(n)O(n)Hard
Container With Most Watercontainer-with-most-water.pyO(n)O(1)Medium
Gas Stationgas-station.pyO(n)O(1)Medium
Jump Gamejump-game.pyO(n)O(1)Medium
Jump Game IIjump-game-ii.pyO(n^2)O(1)Hard
Largest Rectangle in Histogramlargest-rectangle-in-histogram.pyO(n)O(n)HardTricky
Trapping Rain Watertrapping-rain-water.pyO(n)O(1)HardTricky
Wildcard Matchingwildcard-matching.pyO(m + n)O(1)HardTricky

##SQL

ProblemSolutionTimeSpaceDifficultyNotes
Combine Two Tablescombine-two-tables.sqlO(m + n)O(m + n)Easy
Consecutive Numbersconsecutive-numbers.sqlO(n)O(n)Medium
Customers Who Never Ordercustomers-who-never-order.sqlO(n^2)O(1)Easy
Department Highest Salarydepartment-highest-salary.sqlO(n^2)O(n)Medium
Department Top Three Salariesdepartment-top-three-salaries.sqlO(n^2)O(n)Hard
Duplicate Emailsduplicate-emails.sqlO(n^2)O(n)Easy
Employees Earning More Than Their Managersemployees-earning-more-than-their-managers.sqlO(n^2)O(1)Easy
Nth Highest Salarynth-highest-salary.sqlO(n^2)O(n)Medium
Rank Scoresrank-scores.sqlO(n^2)O(n)Medium
Second Highest Salarysecond-highest-salary.sqlO(n)O(1)Easy

About

Solutions of All 179 Algorithm / 10 Database Questions

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages