Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Leetcode solutions, code skeletons, and unit tests in Java (in progress)

NotificationsYou must be signed in to change notification settings

interviewcoder/leetcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build StatusCoverage Status

  root    |--- doc    |     |-- category.md   // category for problems in leetcode    |     |-- problems.tsv  // searchable tsv file listing problems from leetcode    |     |-- road.md       // general things I learnt through the process    |--- lib    |     |-- *.jar         // jar file referenced in this project    |--- src   // solutions for problems    |     |-- _001_TwoSum    |     |         |-- Practice.java    // code skeleton    |     |         |-- Solution.java    |     |         |-- Solution*.java   // other solutions for this problem    |     |-- ......    |--- test  // unit tests    |     |-- _001_TwoSum    |     |         |-- PracticeTest.java     |     |         |-- SolutionTest.java    |     |         |-- Solution*Test.java    |     |-- ......
  • Discussions and code reviews are more than welcome.
  • Solution.java provides OJ-accepted solution.
  • Practice.java provides code skeleton for each problem
  • SolutionTest.java andPracticeTest.java provides basic unit tests to verify your solution.

P.S.:

  • Please use Java 8 to compile and run
  • Many solutions are from online sources, like Leetcode OJ discussion, coders' blogs, etc.
  • Solution that passed unit tests does not guarantee to pass Leetcode OJ.
#ProblemDifficultyTagsNote
001Two SumMediumArrayHash TableO(N^2) -> O(N) + O(N) hashtable
002Add Two NumbersMediumLinked ListMath
003Longest Substring Without Repeating CharactersMediumHash TableTwo PointersStringtwo pointers to keep window -> O(N)
004Median of Two Sorted ArraysHardDivide and ConquerArrayBinary Search
005Longest Palindromic SubstringMediumStringexpanding two pointers
006ZigZag ConversionEasyString
007Reverse IntegerEasyMathHow to monitor Stack Overflow
008String to Integer (atoi)EasyMathString
009Palindrome NumberEasyMath1) count digits; 2) get digit from number's front/back; 3) to avoid StackOverflow, only reverse half part of number
010Regular Expression MatchingHardDynamic ProgrammingBacktrackingStringfinite state machine!
011Container With Most WaterMediumArrayTwo Pointersnarrowing two pointers
012Integer to RomanMediumMathString
013Roman to IntegerEasyMathString
014Longest Common PrefixEasyString
0153SumMediumArrayTwo Pointerssorting then 2sum
0163Sum ClosestMediumArrayTwo Pointers
017Letter Combinations of a Phone NumberMediumBacktrackingStringBFS: iterative V.S. DFS: backtracking
0184SumMediumArrayHash TableTwo Pointers
019Remove Nth Node From End of ListEasyLinked ListTwo Pointersfast-slow two pointers on Linked List
020Valid ParenthesesEasyStackStringstack basic, corner case
021Merge Two Sorted ListsEasyLinked List
022Generate ParenthesesMediumBacktrackingStringBT template
023Merge k Sorted ListsHardDivide and ConquerLinked ListHeap
024Swap Nodes in PairsMediumLinked List
025Reverse Nodes in k-GroupHardLinked List
026Remove Duplicates from Sorted ArrayEasyArrayTwo Pointerspartition techinque on array
027Remove ElementEasyArrayTwo Pointers
028Implement strStr()EasyTwo PointersString
029Divide Two IntegersMediumMathBinary Search!
030Substring with Concatenation of All WordsHardHash TableTwo PointersString
031Next PermutationMediumArray
032Longest Valid ParenthesesHardDynamic ProgrammingStringDP
033Search in Rotated Sorted ArrayHardArrayBinary Search
034Search for a RangeMediumArrayBinary Search! one binary search to find start position, and another one find ending position
035Search Insert PositionMediumArrayBinary Searchstandard binary search with minor modification
036Valid SudokuEasyHash Table
037Sudoku SolverHardBacktrackingHash Table
038Count and SayEasyString
039Combination SumMediumArrayBacktrackingBT template + prune siblings
040Combination Sum IIMediumArrayBacktrackingBT template + prune siblings + skip duplicate
041First Missing PositiveHardArrayswap-until technique
042Trapping Rain WaterHardArrayStackTwo Pointers!!
043Multiply StringsMediumMathString! simulate multiplication
044Wildcard MatchingHardDynamic ProgrammingBacktrackingGreedyString
045Jump Game IIHardArrayGreedy
046PermutationsMediumBacktrackingbacktrack template + select to add
047Permutations IIHardBacktrackingbacktrack template + select to add + skip duplicate using set
048Rotate ImageMediumArray
049Group AnagramsMediumHash TableString!!
050Pow(x, n)MediumMathBinary Search
051N-QueensHardBacktracking
052N-Queens IIHardBacktracking
053Maximum SubarrayMediumDivide and ConquerArrayDynamic Programming
054Spiral MatrixMediumArray
055Jump GameMediumArrayGreedy
056Merge IntervalsHardArraySorthow to decide the boundary of merged interval
057Insert IntervalHardArraySort! enlarge to merge interval
058Length of Last WordEasyString
059Spiral Matrix IIMediumArray
060Permutation SequenceMediumBacktrackingMath
061Rotate ListMediumLinked ListTwo Pointersfast-slow pointers; [189] Rotate Array
062Unique PathsMediumArrayDynamic Programming
063Unique Paths IIMediumArrayDynamic Programming
064Minimum Path SumMediumArrayDynamic Programming
065Valid NumberHardMathString
066Plus OneEasyArrayMath
067Add BinaryEasyMathStringadd binary numbers
068Text JustificationHardString! very careful string operations
069Sqrt(x)MediumMathBinary Search!binary search along y-axle
070Climbing StairsEasyDynamic Programming
071Simplify PathMediumStackString
072Edit DistanceHardDynamic ProgrammingString
073Set Matrix ZeroesMediumArray
074Search a 2D MatrixMediumArrayBinary Search2D coordidates --> 1D index
075Sort ColorsMediumArrayTwo PointersSort
076Minimum Window SubstringHardHash TableTwo PointersString![substring/sublist] hashing + two pointers -> O(N)
077CombinationsMediumBacktracking
078SubsetsMediumArrayBacktrackingBit ManipulationseeREADME
079Word SearchMediumArrayBacktracking
080Remove Duplicates from Sorted Array IIMediumArrayTwo Pointersfrom 2 to k (general)
081Search in Rotated Sorted Array IIMediumArrayBinary Search
082Remove Duplicates from Sorted List IIMediumLinked List
083Remove Duplicates from Sorted ListEasyLinked List
084Largest Rectangle in HistogramHardArrayStack
085Maximal RectangleHardArrayHash TableStackDynamic Programming
086Partition ListMediumLinked ListTwo Pointers
087Scramble StringHardDynamic ProgrammingString
088Merge Sorted ArrayEasyArrayTwo Pointersin-place merging -> from end to begin; two pointers on two lists
089Gray CodeMediumBacktracking
090Subsets IIMediumArrayBacktrackingbacktrack template + skip duplicate
091Decode WaysMediumDynamic ProgrammingString
092Reverse Linked List IIMediumLinked List
093Restore IP AddressesMediumBacktrackingString
094Binary Tree Inorder TraversalMediumTreeHash TableStack
095Unique Binary Search Trees IIMediumTreeDynamic Programming
096Unique Binary Search TreesMediumTreeDynamic Programming
097Interleaving StringHardDynamic ProgrammingString
098Validate Binary Search TreeMediumTreeDepth-first Search
099Recover Binary Search TreeHardTreeDepth-first Search
100Same TreeEasyTreeDepth-first Search
101Symmetric TreeEasyTreeDepth-first Search
102Binary Tree Level Order TraversalEasyTreeBreadth-first Search
103Binary Tree Zigzag Level Order TraversalMediumTreeBreadth-first SearchStack
104Maximum Depth of Binary TreeEasyTreeDepth-first Search
105Construct Binary Tree from Preorder and Inorder TraversalMediumTreeArrayDepth-first Search
106Construct Binary Tree from Inorder and Postorder TraversalMediumTreeArrayDepth-first Search
107Binary Tree Level Order Traversal IIEasyTreeBreadth-first Search
108Convert Sorted Array to Binary Search TreeMediumTreeDepth-first Search
109Convert Sorted List to Binary Search TreeMediumDepth-first SearchLinked List
110Balanced Binary TreeEasyTreeDepth-first Search
111Minimum Depth of Binary TreeEasyTreeDepth-first SearchBreadth-first Search
112Path SumEasyTreeDepth-first Search
113Path Sum IIMediumTreeDepth-first Search
114Flatten Binary Tree to Linked ListMediumTreeDepth-first Search
115Distinct SubsequencesHardDynamic ProgrammingString
116Populating Next Right Pointers in Each NodeMediumTreeDepth-first Search
117Populating Next Right Pointers in Each Node IIHardTreeDepth-first Search
118Pascal's TriangleEasyArray
119Pascal's Triangle IIEasyArray
120TriangleMediumArrayDynamic Programming
121Best Time to Buy and Sell StockMediumArrayDynamic ProgrammingO(N^2) -> O(N)
122Best Time to Buy and Sell Stock IIMediumArrayGreedy
123Best Time to Buy and Sell Stock IIIHardArrayDynamic Programming
124Binary Tree Maximum Path SumHardTreeDepth-first Searchpost-order, local and global ,README
125Valid PalindromeEasyTwo PointersString
126Word Ladder IIHardArrayBacktrackingBreadth-first SearchString
127Word LadderMediumBreadth-first Search
128Longest Consecutive SequenceHardArray
129Sum Root to Leaf NumbersMediumTreeDepth-first Search
130Surrounded RegionsMediumBreadth-first Search
131Palindrome PartitioningMediumBacktracking
132Palindrome Partitioning IIHardDynamic Programming
133Clone GraphMediumDepth-first SearchBreadth-first SearchGraphDFS V.S.BFS
134Gas StationMediumGreedy
135CandyHardGreedy
136Single NumberMediumHash TableBit Manipulation
137Single Number IIMediumBit Manipulation
138Copy List with Random PointerHardHash TableLinked List
139Word BreakMediumDynamic Programming
140Word Break IIHardDynamic ProgrammingBacktracking
141Linked List CycleMediumLinked ListTwo Pointers
142Linked List Cycle IIMediumLinked ListTwo Pointers
143Reorder ListMediumLinked List
144Binary Tree Preorder TraversalMediumTreeStack
145Binary Tree Postorder TraversalHardTreeStack
146LRU CacheHardData Structure
147Insertion Sort ListMediumLinked ListSort
148Sort ListMediumLinked ListSort! fast-slow to find middle + iterative reverse + merge sort
149Max Points on a LineHardHash TableMath
150Evaluate Reverse Polish NotationMediumStack
151Reverse Words in a StringMediumStringREADME
152Maximum Product SubarrayMediumArrayDynamic Programming
153Find Minimum in Rotated Sorted ArrayMediumArrayBinary Search
154Find Minimum in Rotated Sorted Array IIHardArrayBinary Search
155Min StackEasyStackData Structure
157Read N Characters Given Read4EasyString
158Read N Characters Given Read4 IIHardString
160Intersection of Two Linked ListsEasyLinked Listtwo pointers on two lists; combine long and short lists into one
161One Edit DistanceMediumString
162Find Peak ElementMediumArrayBinary Search
163Missing RangesMediumArray
164Maximum GapHardSort
165Compare Version NumbersEasyString
166Fraction to Recurring DecimalMediumHash TableMath
168Excel Sheet Column TitleEasyMathconvert decimal to other BASE system
169Majority ElementEasyDivide and ConquerArrayBit Manipulation
171Excel Sheet Column NumberEasyMathconvert other BASE system to decimal system
172Factorial Trailing ZeroesEasyMathcount the number of certain number (e.g. 5) in n!
173Binary Search Tree IteratorMediumTreeStack
174Dungeon GameHardDynamic ProgrammingBinary Search
179Largest NumberMediumSort
186Reverse words in a string IIMediumArraytwo pass + include last position trick
187Repeated DNA SequencesMediumHash TableBit Manipulation
188Best Time to Buy and Sell Stock IVHardDynamic Programming
189Rotate ArrayEasyArray
190Reverse BitsEasyBit Manipulation
191Number of 1 BitsEasyBit Manipulation
198House RobberEasyDynamic Programming
199Binary Tree Right Side ViewMediumTreeDepth-first SearchBreadth-first Search
200Number of IslandsMediumDepth-first SearchBreadth-first Search
201Bitwise AND of Numbers RangeMediumBit Manipulation
202Happy NumberEasyHash TableMath
203Remove Linked List ElementsEasyLinked List
204Count PrimesEasyHash TableMathsieve algorithm
205Isomorphic StringsEasyHash Table
206Reverse Linked ListEasyLinked List
207Course ScheduleMediumDepth-first SearchBreadth-first SearchGraphTopological Sort
208Implement Trie (Prefix Tree)MediumData StructureTrie
209Minimum Size Subarray SumMediumArrayTwo PointersBinary Search
210Course Schedule IIMediumDepth-first SearchBreadth-first SearchGraphTopological Sort
211Add and Search Word - Data structure designMediumBacktrackingData StructureTrie
212Word Search IIHardBacktrackingTrie
213House Robber IIMediumDynamic Programming
214Shortest PalindromeHardString
215Kth Largest Element in an ArrayMediumDivide and ConquerHeapmax-heap using Java's Priority Queue
216Combination Sum IIIMediumArrayBacktracking
217Contains DuplicateEasyArrayHash Table
218The Skyline ProblemHardDivide and ConquerHeap
219Contains Duplicate IIEasyArrayHash Table
220Contains Duplicate IIIMediumBinary Search Tree
221Maximal SquareMediumDynamic Programming
222Count Complete Tree NodesMediumTreeBinary Search
223Rectangle AreaEasyMath
224Basic CalculatorMediumStackMath
225Implement Stack using QueuesEasyStackData Structure
226Invert Binary TreeEasyTree
227Basic Calculator IIMediumString
228Summary RangesEasyArray
229Majority Element IIMediumArray!vote algorithm
230Kth Smallest Element in a BSTMediumTreeBinary Search
231Power of TwoEasyMathBit Manipulation
232Implement Queue using StacksEasyStackData StructureREADME
233Number of Digit OneMediumMath
234Palindrome Linked ListEasyLinked ListTwo Pointers
235Lowest Common Ancestor of a Binary Search TreeEasyTree
236Lowest Common Ancestor of a Binary TreeMediumTreeREADME
237Delete Node in a Linked ListEasyLinked List
238Product of Array Except SelfMediumArrayO(N^2) -> two pass O(N)
239Sliding Window MaximumHardHeapdescending queue
240Search a 2D Matrix IIMediumDivide and ConquerBinary Search
241Different Ways to Add ParenthesesMediumDivide and Conquer
242Valid AnagramEasyHash TableSort
246Strobogrammatic NumberEasyHash TableMath
251Flatten2DVectorMediumDesign
252Meeting RoomsEasySort
253Meeting Rooms IIMediumHeapGreedySort
256Paint HouseMediumDynamic Programming
257Binary Tree PathsEasyTree
258Add DigitsEasyMath
260Single Number IIIMediumBit Manipulation
261Graph Valid TreeMediumBreadth-first SearchDepth-first SearchGraphUnion-Find
263Ugly NumberEasyMath
264Ugly Number IIMediumMathHeap
265Paint HouseHardDynamic Programming
268Missing NumberMediumArrayMathBit Manipulation
269Alien DictionaryHardGraphTopological SortBFS
273Integer to English WordsMediumMathString
274H-IndexMediumHash TableSort
275H-Index IIMediumBinary Search
278First Bad VersionEasyBinary Search
279Perfect SquaresMediumDynamic ProgrammingBreadth-first SearchMath
282Expression Add OperatorsHardDivide and Conquer
283Move ZeroesEasyArrayTwo Pointers
284Peeking IteratorMediumDesign
285Inorder Successor in BSTMediumTree
286Walls And GatesMediumBFS
287Find the Duplicate NumberHardArrayTwo PointersBinary Search
289Game of LifeMediumArray
290Word PatternEasyHash Table

About

Leetcode solutions, code skeletons, and unit tests in Java (in progress)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp