gitextract_ximp81dy/ ├── .gitignore ├── README.md └── src/ ├── .gitignore ├── AccountsMerge721.java ├── AddBinary67.java ├── AddBoldTagInString616.java ├── AddOneRowToTree623.java ├── AddStrings415.java ├── AddTwoNumbers2.java ├── AddTwoNumbersII445.java ├── AlienDictionary269.java ├── AllNodesDistanceKInBinaryTree863.java ├── AllOOneDataStructure432.java ├── AllPathsFromSourceToTarget797.java ├── AndroidUnlockPatterns351.java ├── AsyncJobMonitor.java ├── AverageOfLevelsInBinaryTree637.java ├── BackspaceStringCompare844.java ├── BalancedBinaryTree110.java ├── BaseballGame682.java ├── BasicCalculator224.java ├── BasicCalculatorII227.java ├── Bench.java ├── BestMeetingPoint296.java ├── BestTimeToBuyAndSellStock121.java ├── BestTimeToBuyAndSellStockII122.java ├── BestTimeToBuyAndSellStockIII123.java ├── BestTimeToBuyAndSellStockIV188.java ├── BestTimeToBuyAndSellStockWithCooldown309.java ├── BestTimeToBuyAndSellStockWithTransactionFee714.java ├── BinarySearchTreeIterator173.java ├── BinaryTreeInorderTraversal94.java ├── BinaryTreeLevelOrderTraversal102.java ├── BinaryTreeLevelOrderTraversalII107.java ├── BinaryTreeLongestConsecutiveSequence298.java ├── BinaryTreeMaximumPathSum124.java ├── BinaryTreePaths257.java ├── BinaryTreePreorderTraversal144.java ├── BinaryTreeRightSideView199.java ├── BinaryTreeVerticalOrderTraversal314.java ├── BinaryTreeZigzagLevelOrderTraversal103.java ├── BinaryTreesWithFactors823.java ├── BitwiseANDOfNumbersRange201.java ├── BoatsToSavePeople885.java ├── BombEnemy361.java ├── BoundaryOfBinaryTree545.java ├── BrickWall554.java ├── BricksFallingWhenHit803.java ├── BuddyStrings859.java ├── BullsAndCows299.java ├── BurstBalloons312.java ├── CanIWin464.java ├── CheapestFlightsWithinKStops787.java ├── ClimbingStairs70.java ├── CloneGraph133.java ├── ClosestBinarySearchTreeValue270.java ├── ClosestBinarySearchTreeValueII272.java ├── CoinChange322.java ├── CoinChangeII518.java ├── CollatzConjecture.java ├── CombinationSum39.java ├── CombinationSumIII216.java ├── CombinationSumIV377.java ├── CompareVersionNumbers165.java ├── ConcatenatedWords472.java ├── ConstructBinaryTreeFromInorderAndPostorderTraversal106.java ├── ConstructBinaryTreeFromPreorderAndInorderTraversal105.java ├── ConstructBinaryTreeFromString536.java ├── ConstructQuadTree427.java ├── ContainerWithMostWater11.java ├── ContainsDuplicate217.java ├── ContainsDuplicateIII220.java ├── ContainsDuplicatesII219.java ├── ContiguousArray525.java ├── ContinuousSubarraySum523.java ├── ConvertANumberToHexadecimal405.java ├── ConvertBSTToGreaterTree538.java ├── ConvertBinarySearchTreeToSortedDoublyLinkedList.java ├── ConvertSortedArrayToBinarySearchTree108.java ├── ConvertSortedListToBST109.java ├── CopyListWithRandomPointer138.java ├── CountNumbersWithUniqueDigits357.java ├── CountOfRangeSum327.java ├── CountOfSmallerNumbersAfterSelf315.java ├── CountPrimes204.java ├── CountingBits338.java ├── CouplesHoldingHands765.java ├── CourseSchedule207.java ├── CourseScheduleII210.java ├── CutOffTreesForGolfEvent675.java ├── DailyTemperatures739.java ├── DataStreamAsDisjointIntervals352.java ├── DecodeString394.java ├── DecodeWays91.java ├── DecodeWaysII639.java ├── DecodedStringAtIndex884.java ├── DeleteAndEarn740.java ├── DeleteNodeInABST450.java ├── DeleteNodeInALinkedList237.java ├── DesignCircularDeque641.java ├── DesignCircularQueue622.java ├── DesignCompressedStringIterator604.java ├── DesignHashMap706.java ├── DesignHashSet705.java ├── DesignHitCounter362.java ├── DesignInMemoryFileSystem588.java ├── DesignLinkedList707.java ├── DesignLogStorageSystem635.java ├── DesignSearchAutocompleteSystem642.java ├── DesignSnakeGame353.java ├── DesignTicTacToe348.java ├── DesignTwitter355.java ├── DiagonalTraverse498.java ├── DiameterOfBinaryTree543.java ├── DifferentWaysToAddParentheses241.java ├── DivideTwoIntegers29.java ├── DominoAndTrominoTiling790.java ├── EditDistance72.java ├── EmployeeFreeTime759.java ├── EncodeAndDecodeStrings271.java ├── EncodeAndDecodeTinyURL535.java ├── EqualTreePartition663.java ├── EvaluateDivision399.java ├── EvaluateReversePolishNotation150.java ├── ExamRoom855.java ├── ExclusiveTimeOfFunctions636.java ├── ExpressionAddOperators282.java ├── FindAllAnagramsInAString438.java ├── FindAllNumbersDisappearedInAnArray448.java ├── FindAnagramMappings760.java ├── FindAndReplacePattern890.java ├── FindBottomLeftTreeValue513.java ├── FindCenterOfMassInA2DArray.java ├── FindDuplicateSubtrees652.java ├── FindEventualSafeStates802.java ├── FindKClosestElements658.java ├── FindKPairsWithSmallestSums373.java ├── FindKthSmallestPairDistance719.java ├── FindLargestValueInEachTreeRow515.java ├── FindMedianFromDataStream295.java ├── FindMinimumInRotatedSortedArray153.java ├── FindMinimumInRotatedSortedArrayII154.java ├── FindModeInBinarySearchTree501.java ├── FindPeakElement162.java ├── FindTheCelebrity277.java ├── FindTheDuplicateNumber287.java ├── FirstBadVersion278.java ├── FirstMissingPositive41.java ├── FirstUniqueCharacterInAString387.java ├── FizzBuzz412.java ├── Flatten2DVector251.java ├── FlattenBinaryTreeToLinkedList114.java ├── FlipGame293.java ├── FlippingAnImage832.java ├── FourSum18.java ├── FourSumII454.java ├── FractionToRecurringDecimal166.java ├── FriendCircles547.java ├── FrogJump403.java ├── GameOfLife289.java ├── GeneralizedAbbreviation320.java ├── GenerateParentheses22.java ├── GraphValidTree261.java ├── GroupAnagrams49.java ├── GroupShiftedStrings249.java ├── GuessNumberHigherOrLowerII375.java ├── GuessTheWord843.java ├── HIndex274.java ├── HandOfStraights846.java ├── HappyNumber202.java ├── HighestPopulationYear.java ├── HouseRobber198.java ├── HouseRobberII213.java ├── HouseRobberIII337.java ├── ImageSmoother661.java ├── ImplementMagicDictionary676.java ├── ImplementQueueUsingStacks232.java ├── ImplementStackusingQueues225.java ├── ImplementStrStr28.java ├── ImplementTriePrefixTree208.java ├── IncreasingSubsequences491.java ├── IncreasingTripletSubsequence334.java ├── InorderSuccessorInBST285.java ├── InsertDeleteGetRandomOOne380.java ├── InsertInterval57.java ├── InsertIntoACyclicSortedList.java ├── InsertionSortList147.java ├── IntegerBreak343.java ├── IntegerToEnglishWords273.java ├── IntegerToRoman12.java ├── InterleavingString97.java ├── IntersectionOfTwoArrays349.java ├── IntersectionOfTwoArraysII350.java ├── IntersectionOfTwoLinkedLists160.java ├── Interval.java ├── InvertBinaryTree226.java ├── IsGraphBipartite785.java ├── IsSubsequence392.java ├── IslandPerimeter463.java ├── IsomorphicStrings205.java ├── JewelsAndStones771.java ├── JudgeRouteCircle657.java ├── JumpGame55.java ├── JumpGameII45.java ├── KEmptySlots683.java ├── KMP.java ├── KeysAndRooms841.java ├── KillProcess582.java ├── KokoEatingBananas875.java ├── KthLargestElementInAnArray215.java ├── KthSmallestElementInABST230.java ├── KthSmallestElementInASortedMatrix378.java ├── KthSmallestPrimeFraction786.java ├── KthSymbolInGrammar779.java ├── LFUCache460.java ├── LRUCache146.java ├── LargestBSTSubtree333.java ├── LargestDivisibleSubset368.java ├── LargestNumber179.java ├── LargestRectangleInHistogram84.java ├── LemonadeChange860.java ├── LengthOfLongestFibonacciSubsequence873.java ├── LetterCombinationsOfAPhoneNumber17.java ├── LexicographicalNumbers386.java ├── LicenseKeyFormatting482.java ├── LinkedListCycle141.java ├── LinkedListCycleII142.java ├── LinkedListRandomNode382.java ├── ListNode.java ├── LoggerRateLimiter359.java ├── LonelyPixelI531.java ├── LongestAbsoluteFilePath388.java ├── LongestCommonPrefix14.java ├── LongestConsecutiveSequence128.java ├── LongestContinuousIncreasingSubsequence674.java ├── LongestHarmoniousSubsequence594.java ├── LongestIncreasingSubsequence300.java ├── LongestMountainInArray845.java ├── LongestPalindrome409.java ├── LongestPalindromicSubsequence516.java ├── LongestPalindromicSubstring5.java ├── LongestRepeatingCharacterReplacement424.java ├── LongestSubstringWithAtMostKDistinctCharacters340.java ├── LongestSubstringWithAtMostTwoDistinctCharacters159.java ├── LongestSubstringWithoutRepeatingCharacters3.java ├── LongestUnivaluePath687.java ├── LongestValidParentheses32.java ├── LongestWordInDictionary720.java ├── LowestCommonAncestorOfABinarySearchTree235.java ├── LowestCommonAncestorOfABinaryTree236.java ├── MagicalString481.java ├── MajorityElement169.java ├── MapSumPairs677.java ├── MatchsticksToSquare473.java ├── MaxAreaOfIsland695.java ├── MaxChunksToMakeSorted769.java ├── MaxChunksToMakeSortedII768.java ├── MaxConsecutiveOnes485.java ├── MaxConsecutiveOnesII487.java ├── MaxIncreaseToKeepCitySkyline807.java ├── MaxPointsOnALine149.java ├── MaxStack716.java ├── MaxSumOfRectangleNoLargerThanK363.java ├── MaximalRectangle85.java ├── MaximalSquare221.java ├── MaximizeDistanceToClosestPerson849.java ├── MaximumAverageSubarrayI643.java ├── MaximumBinaryTree654.java ├── MaximumDepthOfBinaryTree104.java ├── MaximumFrequencyStack895.java ├── MaximumLengthOfPairChain646.java ├── MaximumLengthOfRepeatedSubarray718.java ├── MaximumProductOfThreeNumbers628.java ├── MaximumProductOfWordLengths318.java ├── MaximumProductSubarray152.java ├── MaximumSizeSubarraySumEqualsK325.java ├── MaximumSubarray53.java ├── MaximumSumOf3NonOverlappingSubarrays689.java ├── MaximumVacationDays568.java ├── MaximumWidthOfBinaryTree662.java ├── MaximumXOROfTwoNumbersInAnArray421.java ├── MedianOfTwoSortedArrays4.java ├── MeetingRooms252.java ├── MeetingRoomsII253.java ├── MergeIntervals56.java ├── MergeKSortedLists23.java ├── MergeSortedArray88.java ├── MergeTwoSortedLists21.java ├── MiddleOfTheLinkedList876.java ├── MinCostClimbingStairs746.java ├── MinStack.java ├── Minesweeper529.java ├── MinimumASCIIDeleteSumForTwoStrings712.java ├── MinimumAbsoluteDifferenceInBST530.java ├── MinimumDepthOfBinaryTree111.java ├── MinimumDistanceBetweenBSTNodes783.java ├── MinimumGeneticMutation433.java ├── MinimumHeightTrees310.java ├── MinimumMovesToEqualArrayElementsII462.java ├── MinimumPathSum64.java ├── MinimumSizeSubarraySum209.java ├── MinimumWindowSubsequence727.java ├── MinimumWindowSubstring76.java ├── MissingNumber268.java ├── MissingRanges163.java ├── MonotoneIncreasingDigits738.java ├── MonotonicArray896.java ├── MostCommonWord819.java ├── MostFrequentSubtreeSum508.java ├── MostProfitAssigningWork826.java ├── MoveZeroes283.java ├── MovingAverageFromDataStream346.java ├── MultiplyStrings43.java ├── MyCalendarI729.java ├── MyCalendarII731.java ├── NQueens51.java ├── NQueensII52.java ├── NaryTreeLevelOrderTraversal429.java ├── NaryTreePostorderTraversal590.java ├── NestedIterator.java ├── NestedListWeightSum339.java ├── NextClosestTime681.java ├── NextGreaterElementI496.java ├── NextGreaterElementII503.java ├── NextGreaterElementIII556.java ├── NextPermutation31.java ├── NonDecreasingArray665.java ├── NonOverlappingIntervals435.java ├── NumberOfConnectedComponentsInAnUndirectedGraph323.java ├── NumberOfCornerRectangles750.java ├── NumberOfDigitOne233.java ├── NumberOfIslands200.java ├── NumberOfIslandsII305.java ├── NumberOfLongestIncreasingSubsequence673.java ├── NumberOfMatchingSubsequences792.java ├── OddEvenLinkedList328.java ├── OneEditDistance.java ├── OneEditDistance161.java ├── OnesAndZeroes474.java ├── OpenTheLock752.java ├── OptimalAccountBalancing465.java ├── OutputContestMatches544.java ├── PacificAtlanticWaterFlow417.java ├── PaintFence276.java ├── PaintHouse256.java ├── PaintHouseII265.java ├── PalindromeLinkedList234.java ├── PalindromeNumber9.java ├── PalindromePairs336.java ├── PalindromePartitioning131.java ├── PalindromePermutationII267.java ├── PalindromicSubstrings647.java ├── PartitionEqualSubsetSum416.java ├── PartitionLabels763.java ├── PartitionList86.java ├── PartitionToKEqualSumSubsets698.java ├── PascalsTriangleII119.java ├── PatchingArray330.java ├── PathSum112.java ├── PathSumII113.java ├── PathSumIII437.java ├── PeekingIterator284.java ├── PerfectSquares279.java ├── PermutationInString567.java ├── PermutationSequence60.java ├── Permutations46.java ├── PermutationsII47.java ├── PlusOne66.java ├── PlusOneLinkedList369.java ├── Point.java ├── PopulatingNextRightPointersInEachNode116.java ├── PopulatingNextRightPointersInEachNodeII117.java ├── PossibleBipartition886.java ├── PowXN50.java ├── PowerOfTwo231.java ├── PredictTheWinner486.java ├── ProductOfArrayExceptSelf238.java ├── ProfitableSchemes879.java ├── ProjectionAreaOf3DShapes887.java ├── QuadTreeIntersection558.java ├── QueueReconstructionByHeight406.java ├── RandomFlipMatrix519.java ├── RandomListNode.java ├── RandomPickIndex398.java ├── RangeAddition370.java ├── RangeModule715.java ├── RangeSumQuery2DImmutable304.java ├── RangeSumQuery2DMutable308.java ├── RangeSumQueryImmutable303.java ├── RangeSumQueryMutable307.java ├── RansomNote383.java ├── ReadNCharactersGivenRead4IICallMultipleTimes158.java ├── ReadNCharactersGivenReadFour157.java ├── RearrangeStringKDistanceApart358.java ├── ReconstructItinerary332.java ├── ReconstructOriginalDigitsFromEnglish423.java ├── RectangleArea223.java ├── RectangleAreaII850.java ├── RectangleOverlap863.java ├── RedundantConnection684.java ├── RedundantConnectionII685.java ├── RegularExpressionMatching10.java ├── RemoveDuplicateLetters316.java ├── RemoveDuplicatesFromSortedArray26.java ├── RemoveDuplicatesFromSortedArrayII80.java ├── RemoveDuplicatesFromSortedList83.java ├── RemoveDuplicatesFromSortedListII82.java ├── RemoveInvalidParentheses301.java ├── RemoveLinkedListElements203.java ├── RemoveNthNodeFromEndOfList19.java ├── ReorderList143.java ├── ReorganizeString767.java ├── RepeatedDNASequences187.java ├── RepeatedStringMatch686.java ├── RepeatedSubstringPattern459.java ├── ReplaceWords648.java ├── RestoreIPAddresses93.java ├── ReverseLinkedList206.java ├── ReverseLinkedListII92.java ├── ReverseNodesInKGroup25.java ├── ReverseString344.java ├── ReverseStringII541.java ├── ReverseVowelsOfAString345.java ├── ReverseWordsInAString151.java ├── ReverseWordsInAStringII186.java ├── ReverseWordsInAStringIII557.java ├── RobotRoomCleaner.java ├── RomanToInteger13.java ├── RotateArray189.java ├── RotateFunction396.java ├── RotateImage48.java ├── RotateList61.java ├── RussianDollEnvelopes354.java ├── SameTree100.java ├── SearchA2DMatrix74.java ├── SearchA2DMatrixII240.java ├── SearchForARange34.java ├── SearchInASortedArrayOfUnknownSize702.java ├── SearchInRotatedSortedArray33.java ├── SearchInRotatedSortedArrayII81.java ├── SearchInsertPosition35.java ├── SecondMinimumNodeInABinaryTree671.java ├── SentenceScreenFitting418.java ├── SentenceSimilarity734.java ├── SentenceSimilarityII737.java ├── SerializeAndDeserializeBST449.java ├── SerializeAndDeserializeBinaryTree297.java ├── SetMatrixZeroes73.java ├── ShortestBridge934.java ├── ShortestCompletingWord748.java ├── ShortestDistanceFromAllBuildings317.java ├── ShortestPalindrome214.java ├── ShortestPathToGetAllKeys864.java ├── ShortestSubarrayWithSumAtLeastK862.java ├── ShortestWordDistance243.java ├── ShuffleAnArray384.java ├── SimplifyPath71.java ├── SingleElementInASortedArray540.java ├── SingleNumber136.java ├── SingleNumberII137.java ├── SlidingWindowMaximum239.java ├── SlidingWindowMedian480.java ├── SmallestRange632.java ├── SolveTheEquation640.java ├── SortArrayByParityII922.java ├── SortCharactersByFrequency451.java ├── SortColors75.java ├── SortList148.java ├── SortTransformedArray360.java ├── SparseMatrixMultiplication311.java ├── SpiralMatrix54.java ├── SpiralMatrixII59.java ├── SplitArrayIntoConsecutiveSubsequences659.java ├── SplitArrayIntoFibonacciSequence842.java ├── SplitArrayLargestSum410.java ├── SqrtX69.java ├── StoneGame877.java ├── StringCompression443.java ├── StringToInteger8.java ├── StrobogrammaticNumber246.java ├── StrobogrammaticNumberII247.java ├── SubarrayProductLessThanK713.java ├── SubarraySumEqualsK560.java ├── Subsequence.java ├── Subsets78.java ├── SubsetsII90.java ├── SubtreeOfAnotherTree572.java ├── SudokuSolver37.java ├── SumOfSquareNumbers633.java ├── SumRootToLeafNumbers129.java ├── SummaryRanges228.java ├── SuperUglyNumber313.java ├── SurroundedRegions130.java ├── SwapAdjacentInLRString777.java ├── SymmetricTree101.java ├── TargetSum494.java ├── TaskScheduler621.java ├── TextJustification68.java ├── TheMaze490.java ├── TheMazeII505.java ├── TheMazeIII499.java ├── TheSkylineProblem218.java ├── ThirdMaximumNumber414.java ├── ThreeSum15.java ├── ThreeSumClosest16.java ├── ThreeSumSmaller259.java ├── ToLowerCase709.java ├── TopKFrequentElements347.java ├── TopKFrequentWords692.java ├── TotalHammingDistance477.java ├── TrappingRainWater42.java ├── TrappingRainWaterII407.java ├── TreeLinkNode.java ├── TreeNode.java ├── TreeToForestByErasingNodes.java ├── Triangle120.java ├── TrimABinarySearchTree669.java ├── TwoSum1.java ├── TwoSumIIInputArrayIsSorted167.java ├── TwoSumIVInputIsABST653.java ├── UTF8Validation393.java ├── UglyNumber263.java ├── UglyNumberII264.java ├── UncommonWordsFromTwoSentences884.java ├── UndirectedGraphNode.java ├── UniqueBinarySearchTrees96.java ├── UniqueBinarySearchTreesII95.java ├── UniqueMorseCodeWords804.java ├── UniquePaths62.java ├── UniquePathsII63.java ├── UniqueWordAbbreviation288.java ├── ValidAnagram242.java ├── ValidNumber65.java ├── ValidPalindrome125.java ├── ValidPalindromeII680.java ├── ValidParentheses20.java ├── ValidParenthesisString678.java ├── ValidSudoku36.java ├── ValidTriangleNumber611.java ├── ValidWordAbbreviation408.java ├── ValidateBinarySearchTree98.java ├── ValidateStackSequences946.java ├── VerifyPreorderSequenceInBinarySearchTree255.java ├── WallsAndGates286.java ├── WaterAndJugProblem365.java ├── WiggleSort280.java ├── WiggleSortII324.java ├── WiggleSubsequence376.java ├── WildcardMatching44.java ├── WordAbbreviation527.java ├── WordBreak139.java ├── WordBreakII140.java ├── WordDictionary.java ├── WordLadder127.java ├── WordLadderII126.java ├── WordPattern290.java ├── WordPatternII291.java ├── WordSearch79.java ├── WordSearchII212.java ├── WordSquares425.java ├── ZeroOneMatrix542.java ├── ZigzagIterator281.java ├── data-structures/ │ ├── BinaryIndexedTree.java │ ├── BinarySearchTree.java │ ├── BinarySearchTreeWithParent.java │ ├── DisjointSet.java │ ├── LFUCache.java │ ├── LRUCache.java │ ├── MinHeap.java │ ├── Trie.java │ └── TrieNode.java ├── graph/ │ ├── Dijkstra.java │ ├── README.md │ ├── StrongConnectivity.java │ └── TopologicalSort.java ├── knapsack/ │ ├── CompleteKnapsack.java │ ├── MultipleKnapsack.java │ ├── README.md │ └── ZeroOneKnapsack.java ├── search/ │ ├── BinarySearch.java │ ├── ExponentialSearch.java │ ├── InterpolationSearch.java │ ├── JumpSearch.java │ ├── LinearSearch.java │ ├── README.md │ └── TernarySearch.java └── sort/ ├── BubbleSort.java ├── BucketSort.java ├── CountingSort.java ├── HeapSort.java ├── InsertionSort.java ├── MergeSort.java ├── QuickSort.java ├── README.md ├── RadixSort.java └── SelectionSort.java