MCPcopy Create free account

hub / github.com/FreeTymeKiyan/LeetCode-Sol-Res / functions

Functions1,974 in github.com/FreeTymeKiyan/LeetCode-Sol-Res

↓ 1 callersMethodfindPeakElement
Binary search for a peak. Other peaks can be ignored.
src/main/java/com/freetymekiyan/algorithms/level/medium/FindPeak.java:29
↓ 1 callersMethodfindRepeatedDnaSequences
src/main/cpp/187_Repeated_DNA_Sequences.cpp:51
↓ 1 callersMethodfindRightInterval
Binary Search. Create a start to index mapping. Sort the intervals by start asc. For each interval i, binary search i.end among starts and return the
src/main/java/com/freetymekiyan/algorithms/level/medium/FindRightInterval.java:54
↓ 1 callersMethodfindRightInterval2
Tree Map. Same idea, but tree map already has the implementation ready. Tree map's keys are sorted and has the API to get ceiling/floor or lower/highe
src/main/java/com/freetymekiyan/algorithms/level/medium/FindRightInterval.java:91
↓ 1 callersMethodfindSecondLargest
Second largest element is smaller than or equal to max. When current number is >= max, update second max and max. Note the equal sign since when anoth
src/main/java/com/freetymekiyan/algorithms/other/FindSecondLargest.java:20
↓ 1 callersMethodfindStrobogrammatic
Recursive. 0, 1, 8 are absolutely strobogrammatic. 6, 9 form a pair. When given n > 2, 0 cannot be put at the outside most position. Recurrence relati
src/main/java/com/freetymekiyan/algorithms/level/medium/StrobogrammaticNumber2.java:37
↓ 1 callersMethodfindStrobogrammatic2
Recursive. Build the number from outside to inside. Each position can have multiple choices. A few edge cases: 1. The first digit cannot be 0, unless
src/main/java/com/freetymekiyan/algorithms/level/medium/StrobogrammaticNumber2.java:70
↓ 1 callersMethodfindValidMax
(int[] count, int[] valid, int index)
src/main/java/com/freetymekiyan/algorithms/level/hard/RearrangeStringKDistanceApart.java:54
↓ 1 callersMethodfindWords
Do a DFS for each character in the given matrix
src/main/java/com/freetymekiyan/algorithms/other/FindWords.java:51
↓ 1 callersMethodfindWordsHelper
(char[][] boggle, boolean[][] visited, int i, int j, String str, List<String> ans)
src/main/java/com/freetymekiyan/algorithms/other/FindWords.java:63
↓ 1 callersMethodfirstMissingPositive
Position of integer n should be n - 1 if sorted Correct form [1, 2, 3, 4, ..., #, n] If not in position swap it with nums[nums[p]-1]
src/main/java/com/freetymekiyan/algorithms/level/hard/FirstMissingPositive.java:25
↓ 1 callersMethodfirstNonRepeating
Use string characters as index and build a count array. Augment the count array by storing not just counts but also the index of the first time you en
src/main/java/com/freetymekiyan/algorithms/other/FirstNonRepeatingChar.java:25
↓ 1 callersMethodfizzBuzz
A simpler version. If a number is both divisible by 3 and 5, both "Fizz" and "Buzz" will be added to the string builder. There's no need for another s
src/main/java/com/freetymekiyan/algorithms/level/easy/FizzBuzz.java:49
↓ 1 callersMethodfizzBuzz2
A more verbose version by adding each case strictly.
src/main/java/com/freetymekiyan/algorithms/level/easy/FizzBuzz.java:70
↓ 1 callersMethodfourSum
src/main/cpp/018_4Sum.cpp:29
↓ 1 callersMethodfractionToDecimal
Valid input, denominator can't be zero Convert to long to avoid overflow Divide into three parts, sign, before dot and after dot Before dot = numerato
src/main/java/com/freetymekiyan/algorithms/level/medium/FractionToRecurringDeci.java:38
↓ 1 callersMethodfullJustify
src/main/cpp/068_Text_Justification.cpp:93
↓ 1 callersMethodfullJustify
String. First figure out how many words to fit current line. | Init a length as -1, since the first word doesn't have a space. | Start from i, add wor
src/main/java/com/freetymekiyan/algorithms/level/hard/TextJustification.java:61
↓ 1 callersMethodgcd
recursively calculate the greateset common divisor of two numbers
src/main/java/com/freetymekiyan/algorithms/level/hard/MaxPointsOnALine.java:99
↓ 1 callersMethodgcd
recursively calculate the greateset common divisor of two numbers
src/main/java/com/freetymekiyan/algorithms/level/hard/MaxPoints.java:94
↓ 1 callersMethodgcd
Euclid's Algorithm. gcd(a, 0) = a gcd(a, b) = gcd(b, a mod b) a mod b = a - b floor(a / b)
src/main/java/com/freetymekiyan/algorithms/level/medium/WaterAndJugProblem.java:58
↓ 1 callersMethodgenerateDigitHelper
(int[] nums, int count, int pos, int sum, List<Integer> res)
src/main/java/com/freetymekiyan/algorithms/level/easy/BinaryWatch.java:62
↓ 1 callersMethodgenerateInput
(TestType t)
src/main/java/com/freetymekiyan/algorithms/level/medium/Triangle.java:51
↓ 1 callersMethodgenerateMatrix
Track current level Work level by level toward center
src/main/java/com/freetymekiyan/algorithms/level/medium/SpiralMatrix2.java:35
↓ 1 callersMethodget
(K key)
src/main/java/com/freetymekiyan/datastructures/LRUCache.java:53
↓ 1 callersMethodget
(Key key)
src/main/java/com/freetymekiyan/datastructures/ST.java:27
↓ 1 callersMethodget
get the value from trie with the key @return the value of the key. otherwise, return null
src/main/java/com/freetymekiyan/datastructures/TrieST.java:38
↓ 1 callersMethodgetBitMask
(String s)
src/main/java/com/freetymekiyan/algorithms/level/medium/MaximumProductOfWordLengths.java:54
↓ 1 callersMethodgetCharCountArray
Build an array of character count and the index of its first appearance
src/main/java/com/freetymekiyan/algorithms/other/FirstNonRepeatingChar.java:37
↓ 1 callersMethodgetChild
(char c)
src/main/java/com/freetymekiyan/algorithms/level/hard/DesignSearchAutocompleteSystem.java:197
↓ 1 callersMethodgetHeight
Return the getHeight of a node. Recurrence relation: getHeight(node) = 1 + max(getHeight(node.left), getHeight(node.right)) Base case: If node is null
src/main/java/com/freetymekiyan/algorithms/level/medium/FindLeavesOfBinaryTree.java:62
↓ 1 callersMethodgetHeightAndLca
Get the height of each child of root. If the height is smaller than max height, do nothing. If the height is larger than max height, recurse down. If
src/main/java/com/freetymekiyan/algorithms/other/LCAOfDeepestLeaves.java:38
↓ 1 callersMethodgetLength
(TreeNode head)
src/main/java/com/freetymekiyan/algorithms/other/DoublyLinkedListToBinarySearchTree.java:46
↓ 1 callersMethodgetMedian
Heap. Merge. Just like how we merge 2 sorted arrays, we can do the same to N arrays. The only difference is that a min-heap is needed to find the next
src/main/java/com/freetymekiyan/algorithms/other/MedianOfNSortedArrays.java:23
↓ 1 callersMethodgetMin
Find the minimum value of BST.
src/main/java/com/freetymekiyan/algorithms/other/DeleteANodeFromBinarySearchTree.java:64
↓ 1 callersMethodgetMinDistance
Brute-force. O(mn) Time. Generate all distances of each numbers pair. Maintain a minimum as result. <p> BUD analysis. Bottleneck? Unnecessary? Duplica
src/main/java/com/freetymekiyan/algorithms/other/MinimumDistanceOfTwoSortedArrays.java:36
↓ 1 callersMethodgetNeighbors
Same as Word Ladder 1. Transform a word by replacing each character with a different character, one by one. If the transformed word is in given dictio
src/main/java/com/freetymekiyan/algorithms/level/hard/WordLadder2.java:108
↓ 1 callersMethodgetSortedKey
(String word)
src/main/java/com/freetymekiyan/algorithms/level/medium/GroupAnagrams.java:54
↓ 1 callersMethodgetValidString
Remove invalid parentheses as we traverse through the string, character by character. Def. of an invalid parentheses is that it makes the current stri
src/main/java/com/freetymekiyan/algorithms/other/ValidParentheseString.java:29
↓ 1 callersMethodgraphPaths
DFS. Must avoid cycles during traversal. Add a set of visited node to achieve that. If there is a cycle, add a path. Or if there is no more node to tr
src/main/java/com/freetymekiyan/algorithms/other/GraphPaths.java:28
↓ 1 callersMethodgrayCode
src/main/cpp/089_Gray_Code.cpp:24
↓ 1 callersMethodgrayCode
generate 0, 1 then add 10 from back to get 11, 10 same goes for 00, 01, 11, 10, add 100 to get 110, 111, 101, 100
src/main/java/com/freetymekiyan/algorithms/level/medium/Graycode.java:39
↓ 1 callersMethodhIndex
Binary Search. Think about the definition of h index: h papers that have >= h citations. If randomly pick an index in the citations array, mid. The #
src/main/java/com/freetymekiyan/algorithms/level/medium/HIndex2.java:26
↓ 1 callersMethodhIndex2
(int[] citations)
src/main/java/com/freetymekiyan/algorithms/level/medium/HIndex2.java:45
↓ 1 callersMethodhammingWeight
(int n)
src/main/java/com/freetymekiyan/algorithms/level/easy/Numberof1Bits.java:13
↓ 1 callersMethodhammingWeight
Pure bit manipulation "n &= n - 1" is used to delete the right "1" of n Stop when all 1s are deleted and n is zero
src/main/java/com/freetymekiyan/algorithms/level/easy/NumberOfBits.java:26
↓ 1 callersMethodhammingWeightB
Most straight forward solution Iterate 32 times to check each digit in n
src/main/java/com/freetymekiyan/algorithms/level/easy/NumberOfBits.java:39
↓ 1 callersMethodhammingWeightC
Recursive If n is 0 or 1, return n If not, return n & 1 + hammingWeightC(n >>> 1)
src/main/java/com/freetymekiyan/algorithms/level/easy/NumberOfBits.java:51
↓ 1 callersMethodhasCycle
src/main/cpp/141_Linked_List_Cycle.cpp:30
↓ 1 callersMethodhasNext
()
src/main/java/com/freetymekiyan/algorithms/level/medium/ZigzagIterator.java:77
↓ 1 callersMethodhasNext
()
src/main/java/com/freetymekiyan/algorithms/level/medium/FlattenNestedListIterator.java:80
↓ 1 callersMethodhasOrder
DFS. With node visited states and node on stack states.
src/main/java/com/freetymekiyan/algorithms/level/medium/CourseSchedule2.java:152
↓ 1 callersMethodhelper
(TreeNode node, int targetValue)
src/main/java/com/freetymekiyan/algorithms/other/UpdateTreeValue.java:41
↓ 1 callersMethodhelper
(String nums, String s, int start, List<String> res)
src/main/java/com/freetymekiyan/algorithms/other/IntegerToLetters.java:27
↓ 1 callersMethodhelper
Build the left subtree first. As size shrinks, we can reach the position of next node in tree. Set the node and its left child. Move head to next link
src/main/java/com/freetymekiyan/algorithms/other/DoublyLinkedListToBinarySearchTree.java:34
↓ 1 callersMethodhelper
(char[][] board, HashSet<Integer>[] rows, HashSet<Integer>[] cols, HashSet<Integer>[] squares, int row, int co
src/main/java/com/freetymekiyan/algorithms/level/hard/SudokuSolver_2.java:50
↓ 1 callersMethodhelper
Get copy node from map
src/main/java/com/freetymekiyan/algorithms/level/hard/CopyListWithRandomP.java:30
↓ 1 callersMethodhelper
Post order traversal
src/main/java/com/freetymekiyan/algorithms/level/hard/BinaryTreeMaximumPathSum.java:37
↓ 1 callersMethodhelper
(char[][] board, int i, int j, int k, int num)
src/main/java/com/freetymekiyan/algorithms/level/hard/SudokuSolver.java:61
↓ 1 callersMethodhelper
(TreeNode node, int[] count)
src/main/java/com/freetymekiyan/algorithms/level/medium/CountUnivalueSubtrees.java:38
↓ 1 callersMethodhelper
(String s, int start, int end, int k)
src/main/java/com/freetymekiyan/algorithms/level/medium/LongestSubstringwithAtLeastKRepeatingCharacters.java:42
↓ 1 callersMethodhelper
Recursive, DFS Divide into left subtree and right subtree with indices range Choose mid point as the root of subtree
src/main/java/com/freetymekiyan/algorithms/level/medium/ConvertSortedArrToBST.java:27
↓ 1 callersMethodhelper
(List<Integer> res, TreeNode node, int depth)
src/main/java/com/freetymekiyan/algorithms/level/medium/BinaryTreeRigthSideView.java:75
↓ 1 callersMethodhelper
Backtracking
src/main/java/com/freetymekiyan/algorithms/level/medium/CombinationSum.java:46
↓ 1 callersMethodhelper
(int[] inorder, int inL, int inR, int[] postorder, int postL, int postR, Has
src/main/java/com/freetymekiyan/algorithms/level/medium/ConstructBinaryTree.java:28
↓ 1 callersMethodhelper
Recursive, DFS Build a helper function to pass cur result If its leaf node, just return the val Otherwise, goes to left root first then right root wit
src/main/java/com/freetymekiyan/algorithms/level/medium/SumRootToLeafNumbers.java:37
↓ 1 callersMethodhelper
(int[] nums, int target, int[] dp)
src/main/java/com/freetymekiyan/algorithms/level/medium/CombinationSum4.java:73
↓ 1 callersMethodhelper
(int[][] dp, int start, int end)
src/main/java/com/freetymekiyan/algorithms/level/medium/GuessNumberHigherOrLower2.java:63
↓ 1 callersMethodhelper
Get relative digit from list First digit's index in list is k / factorial(n-1) Get the digit, remove that digit from list and update k Concatenate dig
src/main/java/com/freetymekiyan/algorithms/level/medium/PermutationSequence.java:83
↓ 1 callersMethodhelper
(int n, int[] cache)
src/main/java/com/freetymekiyan/algorithms/level/easy/ClimbingStairs.java:37
↓ 1 callersMethodhelper
(TreeNode node, int level, List<List<TreeNode>> nodes)
src/main/java/com/freetymekiyan/algorithms/level/easy/AverageOfLevelsInBinaryTree.java:73
↓ 1 callersMethodinOrder
(BstNode root)
src/main/java/com/freetymekiyan/algorithms/level/hard/DataStreamAsDisjointIntervals.java:245
↓ 1 callersMethodinOrderList
(TreeNode root, List<Integer> res)
src/main/java/com/freetymekiyan/algorithms/level/medium/ValidateBST.java:72
↓ 1 callersMethodinOrderTraversal
(TreeNode root, List<Integer> res)
src/main/java/com/freetymekiyan/algorithms/level/medium/ValidateBinarySearchTree.java:138
↓ 1 callersMethodinOrderTraverse
(TreeNode root, List<Integer> values)
src/main/java/com/freetymekiyan/algorithms/level/medium/TwoSumIVBST.java:79
↓ 1 callersMethodincreasingTriplet
DP. Similar to find two minimum values. The only difference is we don't update second min until first min is found. Otherwise sec min can be before fi
src/main/java/com/freetymekiyan/algorithms/level/medium/IncreasingTripletSubsequence.java:40
↓ 1 callersMethodincreasingTriplet2
DP. An easier to understand version. First quick verify the input array. Then initialize according to the first 2 values. Then start iterating from th
src/main/java/com/freetymekiyan/algorithms/level/medium/IncreasingTripletSubsequence.java:67
↓ 1 callersMethodinitFromFile
src/main/cpp/037_Sudoku_Solver.cpp:143
↓ 1 callersMethodinitFromFile
src/main/cpp/036_Valid_Sudoku.cpp:76
↓ 1 callersMethodinitGraph
Build an adjacency list and an incoming degree array of graph. Don't know if its acyclic yet. Have to check later in topological sort. @param indegre
src/main/java/com/freetymekiyan/algorithms/level/medium/CourseSchedule2.java:77
↓ 1 callersMethodinorder
(Node x, Queue<Key> q)
src/main/java/com/freetymekiyan/datastructures/BST.java:110
↓ 1 callersMethodinorderTraversal
Iterative. Must move current node pointer correctly. How? If cur is not null, push it to stack and move it to its left. If cur is null, 2 cases: 1. cu
src/main/java/com/freetymekiyan/algorithms/level/medium/BinaryTreeInOrderTraversal.java:41
↓ 1 callersMethodinsert
(String s, int w)
src/main/java/com/freetymekiyan/algorithms/level/hard/PrefixAndSuffixSearch.java:71
↓ 1 callersMethodinsert
(int num, Node node, Integer[] ans, int i, int preSum)
src/main/java/com/freetymekiyan/algorithms/level/hard/CountOfSmallerNumbersAfterSelf.java:39
↓ 1 callersMethodintToRoman
src/main/cpp/012_Integer_to_Roman.cpp:22
↓ 1 callersMethodisAlmostBalanced
The largest height difference of 2 leaves must be <= 1. How to find the largest height difference? By traversing all heights can be generated. Just ne
src/main/java/com/freetymekiyan/algorithms/other/AlmostBalancedTree.java:28
↓ 1 callersMethodisBipartite
DFS. Each edge connects nodes from different sets. So if a node is added to one set, all its neighbors are added to another. Then when it comes to the
src/main/java/com/freetymekiyan/algorithms/level/medium/IsGraphBipartite.java:64
↓ 1 callersMethodisBipartite2
Each node has only 3 states: not visited, in one set, in the other set. So use int[] to replace hash map to run faster. 0 means not visited. 1 means o
src/main/java/com/freetymekiyan/algorithms/level/medium/IsGraphBipartite.java:102
↓ 1 callersMethodisEmpty
()
src/main/java/com/freetymekiyan/datastructures/ArrayStack.java:79
↓ 1 callersMethodisEnd
()
src/main/java/com/freetymekiyan/algorithms/level/medium/ImplementTrie.java:102
↓ 1 callersMethodisHappy
loop detection like linked list
src/main/java/com/freetymekiyan/algorithms/level/easy/HappyNumber.java:39
↓ 1 callersMethodisHappy2
loop detection using Set, use more space
src/main/java/com/freetymekiyan/algorithms/level/easy/HappyNumber.java:52
↓ 1 callersMethodisMatch
src/main/cpp/010_Regular_Expression_Matching.cpp:31
↓ 1 callersMethodisMatch
DP. O(mn) Time. O(mn) Space. Can optimize to 1d array. ' ' can match empty or any sequence. Recurrence Relation: If p[j-1] != ' ': | s[i-1] and p[j-1]
src/main/java/com/freetymekiyan/algorithms/level/hard/WildcardMatching.java:45
↓ 1 callersMethodisMatch
(char c1, char c2)
src/main/java/com/freetymekiyan/algorithms/level/easy/ValidParentheses.java:54
↓ 1 callersMethodisMatch2
Two Pointers. Greedy. Backtracking. Different from regex matching since ' ' cannot shrink the preceding character. ' ' can match any sequence. So it t
src/main/java/com/freetymekiyan/algorithms/level/hard/WildcardMatching.java:97
↓ 1 callersMethodisNumber
src/main/cpp/065_Valid_Number.cpp:28
↓ 1 callersMethodisPalindrome
(String str)
src/main/java/com/freetymekiyan/algorithms/level/medium/PalindromePartitioning.java:54
↓ 1 callersMethodisPalindrome
Two Pointers. Find the middle node, reverse the right half list, then check each node. Use two pointers, one slow pointer s, one fast pointer f. Move
src/main/java/com/freetymekiyan/algorithms/level/easy/PalindromeLinkedList.java:30
↓ 1 callersMethodisPalindrome
Two pointers. Ask for clarification: What characters do we have for input? Space? Case sensitive or not? First convert the string to lowercase. Then s
src/main/java/com/freetymekiyan/algorithms/level/easy/ValidPalindrome.java:33
← previousnext →401–500 of 1,974, ranked by callers