gitextract_nak9cli1/ ├── .gitignore ├── .project ├── LICENSE ├── README-zh-cn.md ├── README.md ├── company/ │ ├── Company.iml │ ├── adobe/ │ │ ├── AddDigits.java │ │ └── MajorityElement.java │ ├── airbnb/ │ │ ├── AddTwoNumbers.java │ │ ├── ContainsDuplicate.java │ │ ├── ContainsDuplicatesII.java │ │ ├── ConvertSortedArrayToBinarySearchTree.java │ │ ├── HouseRobber.java │ │ ├── MergeKSortedLists.java │ │ ├── RegularExpressionMatching.java │ │ ├── TwoSum.java │ │ └── ValidParentheses.java │ ├── amazon/ │ │ ├── 3Sum.java │ │ ├── AddTwoNumbers.java │ │ ├── BestTimeToBuyAndSellStock.java │ │ ├── BinaryTreeLevelOrderTraversal.java │ │ ├── EncodeAndDecodeTinyURL.java │ │ ├── FirstUniqueCharacterInAString.java │ │ ├── GroupAnagrams.java │ │ ├── InsertDeleteGetRandomO1.java │ │ ├── KthLargestElementInAnArray.java │ │ ├── LetterCombinationsOfAPhoneNumber.java │ │ ├── LinkedListCycle.java │ │ ├── LongestPalindromicSubstring.java │ │ ├── LowestCommonAncestorOfABinaryTree.java │ │ ├── MergeKSortedLists.java │ │ ├── MinCostClimbingStairs.java │ │ ├── MinStack.java │ │ ├── NumberOfIslands.java │ │ ├── PalindromeLinkedList.java │ │ ├── ProductOfArrayExceptSelf.java │ │ ├── ReverseLinkedList.java │ │ ├── RotateImage.java │ │ ├── Subsets.java │ │ ├── TrappingRainWater.java │ │ ├── TwoSum.java │ │ ├── ValidParentheses.java │ │ ├── ValidateBinarySearchTree.java │ │ └── WordBreak.java │ ├── apple/ │ │ ├── ReverseWordsInAString.java │ │ └── ValidSudoku.java │ ├── bloomberg/ │ │ ├── FirstUniqueCharacterInAString.java │ │ ├── LinkedListCycle.java │ │ ├── LongestPalindromicSubstring.java │ │ ├── MinStack.java │ │ ├── ReverseWordsInAString.java │ │ └── UniquePaths.java │ ├── facebook/ │ │ ├── 3Sum.java │ │ ├── AddAndSearchWordDataStructureDesign.java │ │ ├── AddBinary.java │ │ ├── BestTimeToBuyAndSellStock.java │ │ ├── BinarySearchTreeIterator.java │ │ ├── BinaryTreeLevelOrderTraversal.java │ │ ├── BinaryTreePaths.java │ │ ├── BinaryTreeVerticalOrderTraversal.java │ │ ├── CloneGraph.java │ │ ├── CombinationSumIV.java │ │ ├── CountAndSay.java │ │ ├── DecodeWays.java │ │ ├── EncodeAndDecodeTinyURL.java │ │ ├── ExclusiveTimeOfFunctions.java │ │ ├── ExpressionAddOperators.java │ │ ├── FindTheCelebrity.java │ │ ├── FirstBadVersion.java │ │ ├── FlattenNestedListIterator.java │ │ ├── GroupAnagrams.java │ │ ├── HammingDistance.java │ │ ├── ImplementTrie.java │ │ ├── InorderSuccessorInBST.java │ │ ├── InsertDeleteGetRandomO1.java │ │ ├── InsertInterval.java │ │ ├── IntegerToEnglishWords.java │ │ ├── KthLargestElementInAnArray.java │ │ ├── LetterCombinationsOfAPhoneNumber.java │ │ ├── LongestConsecutiveSequence.java │ │ ├── LowestCommonAncestorOfABinaryTree.java │ │ ├── MaximumSizeSubarraySumEqualsK.java │ │ ├── MeetingRooms.java │ │ ├── MergeIntervals.java │ │ ├── MergeKSortedLists.java │ │ ├── MergeSortedArray.java │ │ ├── MinStack.java │ │ ├── MinimumSizeSubarraySum.java │ │ ├── MinimumWindowSubstring.java │ │ ├── MoveZeros.java │ │ ├── MultiplyStrings.java │ │ ├── NumberOfIslands.java │ │ ├── OneEditDistance.java │ │ ├── PaintHouseII.java │ │ ├── PalindromeLinkedList.java │ │ ├── PalindromicSubstrings.java │ │ ├── PowerOfXToTheN.java │ │ ├── ProductOfArrayExceptSelf.java │ │ ├── RegularExpressionMatching.java │ │ ├── RemoveDuplicatesFromSortedArray.java │ │ ├── RemoveInvalidParentheses.java │ │ ├── ReverseLinkedList.java │ │ ├── RomanToInteger.java │ │ ├── SearchInRotatedSortedArray.java │ │ ├── SortColors.java │ │ ├── SparseMatrixMultiplication.java │ │ ├── SquareRootX.java │ │ ├── Subsets.java │ │ ├── SubsetsII.java │ │ ├── SumOfLeftLeaves.java │ │ ├── TwoSum.java │ │ ├── ValidPalindrome.java │ │ ├── ValidParentheses.java │ │ ├── ValidateBinarySearchTree.java │ │ ├── WallsAndGates.java │ │ ├── WordBreak.java │ │ └── WordSearch.java │ ├── google/ │ │ ├── 3SumSmaller.java │ │ ├── AndroidUnlockPatterns.java │ │ ├── BinarySearchTreeIterator.java │ │ ├── BinaryTreePaths.java │ │ ├── BinaryTreeVerticalOrderTraversal.java │ │ ├── BinaryWatch.java │ │ ├── BombEnemy.java │ │ ├── BullsAndCows.java │ │ ├── CloneGraph.java │ │ ├── ClosestBinarySearchTreeValue.java │ │ ├── CombinationSumIV.java │ │ ├── DailyTemperatures.java │ │ ├── DecodeString.java │ │ ├── EncodeAndDecodeTinyURL.java │ │ ├── ExpressionAddOperators.java │ │ ├── FindAllNumbersDisappearedInAnArray.java │ │ ├── FindTheDifference.java │ │ ├── FirstUniqueCharacterInAString.java │ │ ├── FlattenNestedListIterator.java │ │ ├── GameOfLife.java │ │ ├── GeneralizedAbbreviation.java │ │ ├── GenerateParentheses.java │ │ ├── GroupShiftedStrings.java │ │ ├── GuessNumberHigherOrLower.java │ │ ├── ImplementTrie.java │ │ ├── InsertDeleteGetRandomO1.java │ │ ├── InsertInterval.java │ │ ├── IslandPerimeter.java │ │ ├── JudgeRouteCircle.java │ │ ├── LetterCombinationsOfAPhoneNumber.java │ │ ├── LoggerRateLimiter.java │ │ ├── LongestConsecutiveSequence.java │ │ ├── LongestSubstringWithAtMostKDistinctCharacters.java │ │ ├── MaximumProductOfWordLengths.java │ │ ├── MergeIntervals.java │ │ ├── MinStack.java │ │ ├── MissingRanges.java │ │ ├── MovingAverageFromDataStream.java │ │ ├── NumberOfIslands.java │ │ ├── PacificAtlanticWaterFlow.java │ │ ├── PaintFence.java │ │ ├── PlusOne.java │ │ ├── PlusOneLinkedList.java │ │ ├── PowerOfTwo.java │ │ ├── PowerOfXToTheN.java │ │ ├── RegularExpressionMatching.javaa │ │ ├── ReverseVowelsOfAString.java │ │ ├── SentenceScreenFitting.java │ │ ├── ShortestDistanceFromAllBuildings.java │ │ ├── SpiralMatrix.java │ │ ├── StrobogrammaticNumber.java │ │ ├── SummaryRanges.java │ │ ├── TrappingRainWater.java │ │ ├── UniqueWordAbbreviation.java │ │ ├── Utf8Validation.java │ │ ├── ValidParentheses.java │ │ ├── WallsAndGates.java │ │ ├── WiggleSort.java │ │ ├── WordBreak.java │ │ ├── WordSquares.java │ │ └── ZigZagIterator.java │ ├── linkedin/ │ │ ├── BinarySearchTreeIterator.java │ │ ├── BinaryTreeLevelOrderTraversal.java │ │ ├── FindTheCelebrity.java │ │ ├── HouseRobber.java │ │ ├── InsertInterval.java │ │ ├── LowestCommonAncestorOfABinaryTree.java │ │ ├── MaximumDepthOfABinaryTree.java │ │ ├── MaximumProductSubarray.java │ │ ├── MaximumSubarray.java │ │ ├── MergeIntervals.java │ │ ├── MergeKSortedLists.java │ │ ├── MinimumWindowSubstring.java │ │ ├── PaintHouse.java │ │ ├── PalindromicSubstrings.java │ │ ├── Permutations.java │ │ ├── PowerOfXToTheN.java │ │ ├── ProductOfArrayExceptSelf.java │ │ ├── SearchInRotatedSortedArray.java │ │ ├── SparseMatrixMultiplication.java │ │ ├── SymmetricTree.java │ │ └── TwoSum.java │ ├── microsoft/ │ │ ├── AddDigits.java │ │ ├── FirstUniqueCharacterInAString.java │ │ ├── HouseRobberII.java │ │ ├── LinkedListCycle.java │ │ ├── LongestIncreasingSubsequence.java │ │ ├── LongestPalindromicSubstring.java │ │ ├── Permutations.java │ │ ├── ReverseWordsInAString.java │ │ └── SpiralMatrix.java │ ├── palantir/ │ │ ├── ContainsDuplicate.java │ │ └── ContainsDuplicatesII.java │ ├── snapchat/ │ │ ├── MinStack.java │ │ ├── ReverseWordsInAString.java │ │ └── ValidSudoku.java │ ├── twitter/ │ │ ├── FlattenNestedListIterator.java │ │ ├── ImplementTrie.java │ │ ├── InsertDeleteGetRandomO1.java │ │ ├── LowestCommonAncestorOfABinaryTree.java │ │ ├── MergeIntervals.java │ │ ├── MergeKSortedLists.java │ │ ├── MultiplyStrings.java │ │ ├── OneEditDistance.java │ │ ├── RegularExpressionMatching.java │ │ ├── ReverseLinkedList.java │ │ ├── TrappingRainWater.java │ │ └── ValidParentheses.java │ ├── uber/ │ │ ├── BestTimeToBuyOrSellStock.java │ │ ├── CloneGraph.java │ │ ├── DecodeWays.java │ │ ├── EncodeAndDecodeTinyURL.java │ │ ├── ExclusiveTimeOfFunctions.java │ │ ├── GenerateParentheses.java │ │ ├── GroupAnagrams.java │ │ ├── GroupShiftedStrings.java │ │ ├── ImplementTrie.java │ │ ├── InsertDeleteGetRandomO1.java │ │ ├── LetterCombinationsOfAPhoneNumber.java │ │ ├── MaximumDepthOfABinaryTree.java │ │ ├── MergeKSortedLists.java │ │ ├── MinStack.java │ │ ├── MinimumWindowSubstring.java │ │ ├── OneEditDistance.java │ │ ├── PalindromePermutation.java │ │ ├── RegularExpressionMatching.java │ │ ├── ReverseLinkedList.java │ │ ├── RomanToInteger.java │ │ ├── SearchInRotatedSortedArray.java │ │ ├── SpiralMatrix.java │ │ ├── Subsets.java │ │ ├── TwoSum.java │ │ ├── ValidPalindrome.java │ │ ├── ValidSudoku.java │ │ └── WordBreak.java │ ├── yahoo/ │ │ ├── ContainsDuplicate.java │ │ └── LinkedListCycle.java │ └── yelp/ │ ├── InsertDeleteGetRandomO1.java │ └── ReverseWordsInAString.java ├── cracking-the-coding-interview/ │ ├── CrackingTheCodingInterview.iml │ ├── chapter-five-bit-manipulation/ │ │ ├── BinaryRepresentation.java │ │ ├── FindMissingInteger.java │ │ ├── InsertMIntoN.java │ │ └── SwapBits.java │ ├── chapter-four-trees-and-graphs/ │ │ ├── BinaryTreeIsBalanced.java │ │ ├── CreateBinarySearchTree.java │ │ ├── CreateLinkedListForEachLevel.java │ │ ├── FindPath.java │ │ ├── IsSubtree.java │ │ ├── PrintPaths.java │ │ └── ValidBinarySearchTree.java │ ├── chapter-nine-recursion-and-dynamic-programming/ │ │ ├── AllPermutations.java │ │ ├── AllSubsets.java │ │ ├── EightQueens.java │ │ ├── MagicIndex.java │ │ ├── RepresentingNCents.java │ │ ├── StackBoxes.java │ │ └── Staircase.java │ ├── chapter-one-arrays-and-strings/ │ │ ├── DeleteDups.java │ │ ├── IsRotation.java │ │ ├── IsUniqueChars.java │ │ ├── NthToLast.java │ │ ├── Permutation.java │ │ └── ReplaceSpaces.java │ ├── chapter-seven-mathematics-and-probability/ │ │ ├── Operations.java │ │ └── WouldIntersect.java │ ├── chapter-three-stacks-and-queues/ │ │ ├── BinaryTreeIsBalanced.java │ │ ├── MyQUeue.java │ │ ├── MyQueue.java │ │ ├── QueueUsingTwoStacks.java │ │ ├── SetOfStacks.java │ │ ├── SortStack.java │ │ ├── StackWithMin.java │ │ ├── ThreeStacks.java │ │ └── TowersOfHanoi.java │ └── chapter-two-linked-lists/ │ ├── DeleteDups.java │ ├── DeleteNode.java │ ├── FindBeginning.java │ ├── IsPalindrome.java │ ├── NthToLast.java │ └── Partition.java ├── interviews.iml ├── leetcode/ │ ├── LeetCode.iml │ ├── array/ │ │ ├── BestTimeToBuyAndSellStock.java │ │ ├── ContainsDuplicatesII.java │ │ ├── FindAllNumbersDisappearedInAnArray.java │ │ ├── FindTheCelebrity.java │ │ ├── GameOfLife.java │ │ ├── IncreasingTripletSubsequence.java │ │ ├── InsertDeleteGetRandomO1.java │ │ ├── InsertInterval.java │ │ ├── LongestConsecutiveSequence.java │ │ ├── MajorityElement.java │ │ ├── MaximumProductSubarray.java │ │ ├── MaximumSubarray.java │ │ ├── MergeIntervals.java │ │ ├── MinCostClimbingStairs.java │ │ ├── MinimumPathSum.java │ │ ├── MissingRanges.java │ │ ├── PlusOne.java │ │ ├── ProductofArrayExceptSelf.java │ │ ├── RemoveElement.java │ │ ├── RotateImage.java │ │ ├── SearchInRotatedSortedArray.java │ │ ├── SpiralMatrix.java │ │ ├── SpiralMatrixII.java │ │ ├── Subsets.java │ │ ├── SubsetsII.java │ │ ├── SummaryRanges.java │ │ ├── UniquePaths.java │ │ ├── WiggleSort.java │ │ └── WordSearch.java │ ├── backtracking/ │ │ ├── AndroidUnlockPatterns.java │ │ ├── GeneralizedAbbreviation.java │ │ ├── GenerateParentheses.java │ │ ├── LetterCombinationsOfAPhoneNumber.java │ │ └── Permutations.java │ ├── binary-search/ │ │ ├── ClosestBinarySearchTreeValue.java │ │ ├── FirstBadVersion.java │ │ ├── GuessNumberHigherOrLower.java │ │ ├── PowerOfXToTheN.java │ │ └── SquareRootX.java │ ├── bit-manipulation/ │ │ ├── BinaryWatch.java │ │ ├── CountingBits.java │ │ ├── HammingDistance.java │ │ ├── MaximumProductOfWordLengths.java │ │ ├── NumberOfOneBits.java │ │ ├── PowerOfTwo.java │ │ ├── SumOfTwoInteger.java │ │ └── Utf8Validation.java │ ├── brainteaser/ │ │ └── BulbSwitcher.java │ ├── breadth-first-search/ │ │ ├── BinaryTreeLevelOrderTraversal.java │ │ ├── CloneGraph.java │ │ ├── PacificAtlanticWaterFlow.java │ │ ├── RemoveInvalidParentheses.java │ │ ├── ShortestDistanceFromAllBuildings.java │ │ ├── SymmetricTree.java │ │ └── WallsAndGates.java │ ├── depth-first-search/ │ │ ├── BalancedBinaryTree.java │ │ ├── BattleshipsInABoard.java │ │ ├── ConvertSortedArrayToBinarySearchTree.java │ │ ├── MaximumDepthOfABinaryTree.java │ │ ├── NumberOfIslands.java │ │ ├── PopulatingNextRightPointersInEachNode.java │ │ └── SameTree.java │ ├── design/ │ │ ├── InsertDeleteGetRandomO1.java │ │ ├── MinStack.java │ │ └── ZigZagIterator.java │ ├── divide-and-conquer/ │ │ ├── ExpressionAddOperators.java │ │ └── KthLargestElementInAnArray.java │ ├── dynamic-programming/ │ │ ├── BombEnemy.java │ │ ├── ClimbingStairs.java │ │ ├── CoinChange.java │ │ ├── CombinationSumIV.java │ │ ├── CountingBits.java │ │ ├── EditDistance.java │ │ ├── HouseRobber.java │ │ ├── HouseRobberII.java │ │ ├── LongestIncreasingSubsequence.java │ │ ├── MinCostClimbingStairs.java │ │ ├── MinimumPathSum.java │ │ ├── PaintFence.java │ │ ├── PaintHouse.java │ │ ├── PaintHouseII.java │ │ ├── PalindromicSubstrings.java │ │ ├── RegularExpressionMatching.java │ │ ├── SentenceScreenFitting.java │ │ ├── UniqueBinarySearchTrees.java │ │ ├── UniquePaths.java │ │ └── WordBreak.java │ ├── greedy/ │ │ └── BestTimeToBuyAndSellStockII.java │ ├── hash-table/ │ │ ├── BinaryTreeVerticalOrderTraversal.java │ │ ├── BullsAndCows.java │ │ ├── ContainsDuplicate.java │ │ ├── ContainsDuplicatesII.java │ │ ├── DailyTemperatures.java │ │ ├── EncodeAndDecodeTinyURL.java │ │ ├── FindAnagramMappings.java │ │ ├── FindTheDifference.java │ │ ├── FirstUniqueCharacterInAString.java │ │ ├── GroupAnagrams.java │ │ ├── GroupShiftedStrings.java │ │ ├── InsertDeleteGetRandomO1.java │ │ ├── IslandPerimeter.java │ │ ├── JewelsAndStones.java │ │ ├── LoggerRateLimiter.java │ │ ├── MaximumSizeSubarraySumEqualsK.java │ │ ├── MinimumWindowSubstring.java │ │ ├── SingleNumberII.java │ │ ├── SparseMatrixMultiplication.java │ │ ├── StrobogrammaticNumber.java │ │ ├── TwoSum.java │ │ ├── UniqueWordAbbreviation.java │ │ ├── ValidAnagram.java │ │ └── ValidSudoku.java │ ├── linked-list/ │ │ ├── AddTwoNumbers.java │ │ ├── DeleteNodeInALinkedList.java │ │ ├── LinkedListCycle.java │ │ ├── MergeKSortedLists.java │ │ ├── PalindromeLinkedList.java │ │ ├── PlusOneLinkedList.java │ │ └── ReverseLinkedList.java │ ├── math/ │ │ ├── AddDigits.java │ │ ├── BulbSwitcher.java │ │ ├── EncodeAndDecodeTinyURL.java │ │ ├── PalindromeNumber.java │ │ ├── PlusOne.java │ │ ├── PoorPigs.java │ │ └── PowerOfTwo.java │ ├── queue/ │ │ └── MovingAverageFromDataStream.java │ ├── sort/ │ │ ├── MeetingRooms.java │ │ └── MeetingRoomsII.java │ ├── stack/ │ │ ├── BinarySearchTreeIterator.java │ │ ├── DailyTemperatures.java │ │ ├── DecodeString.java │ │ ├── ExclusiveTimeOfFunctions.java │ │ ├── FlattenNestedListIterator.java │ │ ├── MinStack.java │ │ └── TrappingRainWater.java │ ├── string/ │ │ ├── AddBinary.java │ │ ├── CountAndSay.java │ │ ├── DecodeWays.java │ │ ├── EditDistance.java │ │ ├── FirstUniqueCharacterInAString.java │ │ ├── GenerateParentheses.java │ │ ├── IntegerToEnglishWords.java │ │ ├── JudgeRouteCircle.java │ │ ├── LongestCommonPrefix.java │ │ ├── LongestPalindrome.java │ │ ├── LongestPalindromicSubstring.java │ │ ├── LongestSubstringWithAtMostKDistinctCharacters.java │ │ ├── MinimumWindowSubstring.java │ │ ├── MultiplyStrings.java │ │ ├── OneEditDistance.java │ │ ├── PalindromePermutation.java │ │ ├── PalindromicSubstrings.java │ │ ├── ReverseVowelsOfAString.java │ │ ├── ReverseWordsInAString.java │ │ ├── RomanToInteger.java │ │ ├── ValidPalindrome.java │ │ └── ValidParentheses.java │ ├── tree/ │ │ ├── BinaryTreeMaximumPathSum.java │ │ ├── BinaryTreePaths.java │ │ ├── InorderSuccessorInBST.java │ │ ├── InvertBinaryTree.java │ │ ├── LowestCommonAncestorOfABinaryTree.java │ │ ├── SumOfLeftLeaves.java │ │ ├── TrimABinarySearchTree.java │ │ └── ValidateBinarySearchTree.java │ ├── trie/ │ │ ├── AddAndSearchWordDataStructureDesign.java │ │ ├── ImplementTrie.java │ │ └── WordSquares.java │ └── two-pointers/ │ ├── 3Sum.java │ ├── 3SumSmaller.java │ ├── LinkedListCycle.java │ ├── MergeSortedArray.java │ ├── MinimumSizeSubarraySum.java │ ├── MoveZeros.java │ ├── RemoveDuplicatesFromSortedArray.java │ ├── RemoveElement.java │ ├── ReverseString.java │ └── SortColors.java └── uva/ ├── AddingReversedNumbers.java ├── Ants.java ├── ArchaeologistsDilemma.java ├── AverageSpeed.java ├── BackToIntermediateMath.java ├── BasicRemains.java ├── BasicallySpeaking.java ├── BigMod.java ├── BrickGame.java ├── CoconutsRevisited.java ├── DigitCounting.java ├── FactorialFrequenices.java ├── FiveHundredFactorial.java ├── Friends.java ├── GoldbachConjecture.java ├── GoogleIsFeelingLucky.java ├── HashmatWarriors.java ├── HighPrecisionNumber.java ├── HighSchoolPhysics.java ├── ICanGuessTheDataStructure.java ├── IntegerInquiry.java ├── JollyJumpers.java ├── LargestPrimeDivisor.java ├── LightMoreLight.java ├── MischievousChildren.java ├── Modex.java ├── MultipleOfSeventeen.java ├── Newspaper.java ├── NumberTheoryForNewbies.java ├── NumberingRoads.java ├── OpenSource.java ├── Parity.java ├── PeskyPalindromes.java ├── PrimeFactors.java ├── PseudoPrimeNumbers.java ├── SimplifyingFractions.java ├── SimplyEmirp.java ├── SkewBinary.java ├── SolveEquation.java ├── SplittingNumbers.java ├── TheHugeOne.java ├── TheLastNonZeroDigit.java ├── TheSettlersOfCatan.java ├── VeryEasy.java ├── VirtualFriends.java ├── WhatBaseIsThis.java └── WhoSaidCrisis.java