在 github 上發現這麼一篇,感受不錯,分享出來。java
原文地址:https://github.com/kdn251/interviews/blob/master/README-zh-cn.mdandroid
O(n)
O(n)
O(1)
O(1)
O(n)
O(n)
O(1)
O(1)
O(n)
O(n)
O(1)
O(1)
O(log(n))
O(log(n))
O(log(n))
O(log(n))
O(log(n))
O(log(n))
O(log(n))
O(log(n))
O(log(n))
O(log(n))
O(log(n))
O(log(n))
O(1)
O(nlog(n))
O(n^2)
O(nlog(n))
O(nlog(n))
O(nlog(n))
O(nlog(n))
Ω(n + k)
O(n^2)
Θ(n + k)
Ω(nk)
O(nk)
Θ(nk)
O(|V| + |E|)
O(|V| + |E|)
O(|V| + |E|)
O(|V|^2)
O(|E|)
O(|V||E|)
O(|V|^3)
O(|V|^3)
O(|V|^3)
O(|V|^2)
O(|E|log|V|)
s & (1 << k)
s |= (1 << k)
s &= ~(1 << k)
s ^= ~(1 << k)
s << n
s >> n
s & t
s | t
s & ~t
x = x ^ y ^ (y = x)
s & (-s)
~s & (s + 1)
x ^= y; y ^= x; x ^= y;
. ├── Array │ ├── bestTimeToBuyAndSellStock.java │ ├── findTheCelebrity.java │ ├── gameOfLife.java │ ├── increasingTripletSubsequence.java │ ├── insertInterval.java │ ├── longestConsecutiveSequence.java │ ├── maximumProductSubarray.java │ ├── maximumSubarray.java │ ├── mergeIntervals.java │ ├── missingRanges.java │ ├── productOfArrayExceptSelf.java │ ├── rotateImage.java │ ├── searchInRotatedSortedArray.java │ ├── spiralMatrixII.java │ ├── subsetsII.java │ ├── subsets.java │ ├── summaryRanges.java │ ├── wiggleSort.java │ └── wordSearch.java ├── Backtracking │ ├── androidUnlockPatterns.java │ ├── generalizedAbbreviation.java │ └── letterCombinationsOfAPhoneNumber.java ├── BinarySearch │ ├── closestBinarySearchTreeValue.java │ ├── firstBadVersion.java │ ├── guessNumberHigherOrLower.java │ ├── pow(x,n).java │ └── sqrt(x).java ├── BitManipulation │ ├── binaryWatch.java │ ├── countingBits.java │ ├── hammingDistance.java │ ├── maximumProductOfWordLengths.java │ ├── numberOf1Bits.java │ ├── sumOfTwoIntegers.java │ └── utf-8Validation.java ├── BreadthFirstSearch │ ├── binaryTreeLevelOrderTraversal.java │ ├── cloneGraph.java │ ├── pacificAtlanticWaterFlow.java │ ├── removeInvalidParentheses.java │ ├── shortestDistanceFromAllBuildings.java │ ├── symmetricTree.java │ └── wallsAndGates.java ├── DepthFirstSearch │ ├── balancedBinaryTree.java │ ├── battleshipsInABoard.java │ ├── convertSortedArrayToBinarySearchTree.java │ ├── maximumDepthOfABinaryTree.java │ ├── numberOfIslands.java │ ├── populatingNextRightPointersInEachNode.java │ └── sameTree.java ├── Design │ └── zigzagIterator.java ├── DivideAndConquer │ ├── expressionAddOperators.java │ └── kthLargestElementInAnArray.java ├── DynamicProgramming │ ├── bombEnemy.java │ ├── climbingStairs.java │ ├── combinationSumIV.java │ ├── countingBits.java │ ├── editDistance.java │ ├── houseRobber.java │ ├── paintFence.java │ ├── paintHouseII.java │ ├── regularExpressionMatching.java │ ├── sentenceScreenFitting.java │ ├── uniqueBinarySearchTrees.java │ └── wordBreak.java ├── HashTable │ ├── binaryTreeVerticalOrderTraversal.java │ ├── findTheDifference.java │ ├── groupAnagrams.java │ ├── groupShiftedStrings.java │ ├── islandPerimeter.java │ ├── loggerRateLimiter.java │ ├── maximumSizeSubarraySumEqualsK.java │ ├── minimumWindowSubstring.java │ ├── sparseMatrixMultiplication.java │ ├── strobogrammaticNumber.java │ ├── twoSum.java │ └── uniqueWordAbbreviation.java ├── LinkedList │ ├── addTwoNumbers.java │ ├── deleteNodeInALinkedList.java │ ├── mergeKSortedLists.java │ ├── palindromeLinkedList.java │ ├── plusOneLinkedList.java │ ├── README.md │ └── reverseLinkedList.java ├── Queue │ └── movingAverageFromDataStream.java ├── README.md ├── Sort │ ├── meetingRoomsII.java │ └── meetingRooms.java ├── Stack │ ├── binarySearchTreeIterator.java │ ├── decodeString.java │ ├── flattenNestedListIterator.java │ └── trappingRainWater.java ├── String │ ├── addBinary.java │ ├── countAndSay.java │ ├── decodeWays.java │ ├── editDistance.java │ ├── integerToEnglishWords.java │ ├── longestPalindrome.java │ ├── longestSubstringWithAtMostKDistinctCharacters.java │ ├── minimumWindowSubstring.java │ ├── multiplyString.java │ ├── oneEditDistance.java │ ├── palindromePermutation.java │ ├── README.md │ ├── reverseVowelsOfAString.java │ ├── romanToInteger.java │ ├── validPalindrome.java │ └── validParentheses.java ├── Tree │ ├── binaryTreeMaximumPathSum.java │ ├── binaryTreePaths.java │ ├── inorderSuccessorInBST.java │ ├── invertBinaryTree.java │ ├── lowestCommonAncestorOfABinaryTree.java │ ├── sumOfLeftLeaves.java │ └── validateBinarySearchTree.java ├── Trie │ ├── addAndSearchWordDataStructureDesign.java │ ├── implementTrie.java │ └── wordSquares.java └── TwoPointers ├── 3Sum.java ├── 3SumSmaller.java ├── mergeSortedArray.java ├── minimumSizeSubarraySum.java ├── moveZeros.java ├── removeDuplicatesFromSortedArray.java ├── reverseString.java └── sortColors.java 18 directories, 124 files