MCPcopy Create free account

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

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

↓ 2 callersMethodgetNextRow
()
src/main/java/com/freetymekiyan/algorithms/level/medium/Flatten2dVector.java:57
↓ 2 callersMethodgetNode
(char ch)
src/main/java/com/freetymekiyan/algorithms/level/medium/ImplementTrie.java:90
↓ 2 callersMethodgetSum
(int i)
src/main/java/com/freetymekiyan/algorithms/level/medium/RangeSumQueryMutable.java:54
↓ 2 callersMethodgetTop3Hottest
Keep a window of 3 highest times sentences with a Priority Queue (min heap). Note that the small times go first, then the lexicographically larger one
src/main/java/com/freetymekiyan/algorithms/level/hard/DesignSearchAutocompleteSystem.java:179
↓ 2 callersMethodgreater
(int[] nums1, int i, int[] nums2, int j)
src/main/java/com/freetymekiyan/algorithms/level/hard/CreateMaximumNumber.java:63
↓ 2 callersMethodhasLink
(char ch)
src/main/java/com/freetymekiyan/algorithms/level/medium/ImplementTrie.java:86
↓ 2 callersMethodhasNext
()
src/main/java/com/freetymekiyan/algorithms/other/IntegerIterator.java:32
↓ 2 callersMethodhasNext
()
src/main/java/com/freetymekiyan/algorithms/level/medium/Flatten2dVector.java:67
↓ 2 callersMethodhasNext
Just check next.
src/main/java/com/freetymekiyan/algorithms/level/medium/PeekingIterator.java:76
↓ 2 callersMethodheight
(TreeNode root)
src/main/java/com/freetymekiyan/algorithms/other/TreeDiameter.java:22
↓ 2 callersMethodhundredsToWords
Recursive. Convert number n < 1000 to English words string. Base cases: If n == 0, 0 is already covered as a single digit. If it's not a single digit,
src/main/java/com/freetymekiyan/algorithms/level/hard/IntegerToEnglishWords.java:86
↓ 2 callersMethodinit
(int i, int val)
src/main/java/com/freetymekiyan/algorithms/level/medium/RangeSumQueryMutable.java:40
↓ 2 callersMethodinorder
(TreeNode root, double target, boolean reverse, Stack<Integer> stack)
src/main/java/com/freetymekiyan/algorithms/level/hard/ClosestBinarySearchTreeValue2.java:64
↓ 2 callersMethodinsert
(String sentence, int times)
src/main/java/com/freetymekiyan/algorithms/level/hard/DesignSearchAutocompleteSystem.java:138
↓ 2 callersMethodisEmpty
()
src/main/java/com/freetymekiyan/datastructures/LinkedListQueue.java:40
↓ 2 callersMethodisFriend
(Person p1, Person p2)
src/main/java/com/freetymekiyan/algorithms/other/Celebrity.java:36
↓ 2 callersMethodisPalindrome
judge whether a string is a Palindrome
src/main/java/com/freetymekiyan/algorithms/level/hard/PalindromePartitioning2.java:70
↓ 2 callersMethodisPalindrome
(String s, int l, int r)
src/main/java/com/freetymekiyan/algorithms/level/easy/ValidPalindrome2.java:43
↓ 2 callersMethodisValid
(int row, int[] board)
others/NQueens_shuna.java:67
↓ 2 callersMethodisValid
(String s)
src/main/java/com/freetymekiyan/algorithms/level/medium/RestoreIpAddresses.java:45
↓ 2 callersMethodisWindowExist
Array, O(n) Time. Iterate through the array and check whether the sum of size size subarray > s. If larger, return true. Otherwise false.
src/main/java/com/freetymekiyan/algorithms/level/medium/MinSizeSubarraySum.java:75
↓ 2 callersMethodlengthLongestPath
Stack. Using stack to save previous length at each level. Find current level by the last index of "\t" in filename + 1. Compare current level with sta
src/main/java/com/freetymekiyan/algorithms/level/medium/LongestAbsoluteFilePath.java:65
↓ 2 callersMethodless
(Comparable[] pq, int i, int k)
src/main/java/com/freetymekiyan/algorithms/other/HeapSort.java:37
↓ 2 callersMethodmaxArray
(int[] nums, int k)
src/main/java/com/freetymekiyan/algorithms/level/hard/CreateMaximumNumber.java:71
↓ 2 callersMethodmaxKadane
(int[] A, int s, int e)
src/main/java/com/freetymekiyan/algorithms/other/MaxSubseqDifferenceNoOverlap.java:54
↓ 2 callersMethodmaxProfit
DP, bottom-up, O(kn) Time, O(kn) Space
src/main/java/com/freetymekiyan/algorithms/level/hard/BestTimeToBuyAndSellStock4.java:78
↓ 2 callersMethodmaxProfitOpt
DP, bottom-up, O(kn) Time, O(n) Space If k >= n/2, we can have transactions any time, O(n). dp[k][i+1] represents the max profit of using [0, i] and k
src/main/java/com/freetymekiyan/algorithms/level/hard/BestTimeToBuyAndSellStock4.java:46
↓ 2 callersMethodmerge
Sort. Greedy. O(nlogn) Time. Sort the intervals by start time, ascending. Use a pointer, prev, for previous merged interval. For each of the intervals
src/main/java/com/freetymekiyan/algorithms/level/medium/MergeIntervals.java:36
↓ 2 callersMethodminKStrictAscending
DP Keep track of previous minimum possible value and k while iterating over the array If A[i] <= prev - k, which means k is not big enough, calculate
src/main/java/com/freetymekiyan/algorithms/other/MinKStrictAscending.java:33
↓ 2 callersMethodminKadane
Modification of
src/main/java/com/freetymekiyan/algorithms/other/MaxSubseqDifferenceNoOverlap.java:81
↓ 2 callersMethodmoveToHead
(Node node)
src/main/java/com/freetymekiyan/datastructures/LRUCache.java:62
↓ 2 callersMethodmoveToHead
Remove node from list and add it to head.
src/main/java/com/freetymekiyan/algorithms/level/hard/LRUCache.java:90
↓ 2 callersMethodnetworkDelayTime
Dijkstra's Algorithm. Generate minimum distances from node K to each node possible. Then the maximum is the time needed. Similar to BFS, except that i
src/main/java/com/freetymekiyan/algorithms/level/medium/NetworkDelayTime.java:36
↓ 2 callersMethodnetworkDelayTime2
Bellman Ford.
src/main/java/com/freetymekiyan/algorithms/level/medium/NetworkDelayTime.java:67
↓ 2 callersMethodnetworkDelayTime3
Dijkstra. Optimized getEdges to O(1).
src/main/java/com/freetymekiyan/algorithms/level/medium/NetworkDelayTime.java:92
↓ 2 callersMethodnext
()
src/main/java/com/freetymekiyan/algorithms/other/PeekIterator.java:35
↓ 2 callersMethodnext
()
src/main/java/com/freetymekiyan/algorithms/level/medium/Flatten2dVector.java:61
↓ 2 callersMethodnextGreatestLetter
Binary Search. Note that letters are sorted but can have DUPLICATES!
src/main/java/com/freetymekiyan/algorithms/level/easy/FindSmallestLetterGreaterThanTarget.java:54
↓ 2 callersMethodnextGreatestLetter2
Binary Search. Find the next letter of target in the array. Can be faster since we can return as soon as the letter is found.
src/main/java/com/freetymekiyan/algorithms/level/easy/FindSmallestLetterGreaterThanTarget.java:76
↓ 2 callersMethodnextGreatestLetter3
Binary Search. Same idea. But use modular operation at the end. Since left is within [0, letters.length]. left = letters.length when the target is alw
src/main/java/com/freetymekiyan/algorithms/level/easy/FindSmallestLetterGreaterThanTarget.java:103
↓ 2 callersMethodpartition
Backtracking
src/main/java/com/freetymekiyan/algorithms/level/medium/PalindromePartitioning.java:32
↓ 2 callersMethodpowMod
a^k % 1337 = (a % 1337)^k % 1337
src/main/java/com/freetymekiyan/algorithms/level/medium/SuperPow.java:55
↓ 2 callersMethodprintArr
(int[] A, int start, int end)
src/main/java/com/freetymekiyan/algorithms/other/MaxSubseqDifference.java:82
↓ 2 callersMethodpushAll
(TreeNode root)
src/main/java/com/freetymekiyan/algorithms/level/medium/BSTIterator.java:51
↓ 2 callersMethodpushAllLeft
(TreeNode root)
src/main/java/com/freetymekiyan/algorithms/level/medium/BinarySearchTreeIterator.java:55
↓ 2 callersMethodquickSelect
Return the ranking position of k in nums.
src/main/java/com/freetymekiyan/algorithms/level/medium/WiggleSort2.java:68
↓ 2 callersMethodread4
(char[] buf)
src/main/java/com/freetymekiyan/algorithms/level/hard/ReadNCharactersGivenRead42.java:125
↓ 2 callersMethodremoveNode
(Node node)
src/main/java/com/freetymekiyan/datastructures/LRUCache.java:67
↓ 2 callersMethodremoveNode
Remove a node from double linked list.
src/main/java/com/freetymekiyan/algorithms/level/hard/LRUCache.java:98
↓ 2 callersMethodreverse
(char[] str, int l, int r)
src/main/java/com/freetymekiyan/algorithms/level/medium/ReverseWordsInAString2.java:39
↓ 2 callersMethodreverse
Last digit is zero, output? Reversed might overflow? 1000000003
src/main/java/com/freetymekiyan/algorithms/level/easy/ReverseInt.java:38
↓ 2 callersMethodreverseBits
O(1) Time, O(1) Space Move res 1 bit left, a Get first bit of n, b res = a ^ b Move n right 1 bit for next loop Unsigned shift means fill new bit at t
src/main/java/com/freetymekiyan/algorithms/level/easy/ReverseBits.java:49
↓ 2 callersMethodreverseBitsOpt
O(1) Time, O(1) Space Divide 32 bits into 4 bytes Cache each byte and its reversed result in a hashmap Check cache for result first instead of computi
src/main/java/com/freetymekiyan/algorithms/level/easy/ReverseBits.java:62
↓ 2 callersMethodrobRange
(int[] nums, int start, int end)
src/main/java/com/freetymekiyan/algorithms/level/medium/HouseRobber2.java:43
↓ 2 callersMethodsearchPrefix
(String word)
src/main/java/com/freetymekiyan/algorithms/level/medium/ImplementTrie.java:43
↓ 2 callersMethodserialize
(TreeNode root)
src/main/java/com/freetymekiyan/algorithms/level/hard/SerializeAndDeserializeBinaryTree.java:52
↓ 2 callersMethodshortest
Merge. O(m + n). The indices are already sorted in the list. To get shortest distance, just move the pointer with smaller value. For i < indices1.size
src/main/java/com/freetymekiyan/algorithms/level/medium/ShortestWordDistance2.java:74
↓ 2 callersMethodsink
(Comparable[] pq, int i, int j)
src/main/java/com/freetymekiyan/algorithms/other/HeapSort.java:27
↓ 2 callersMethodsumRange
(int i, int j)
src/main/java/com/freetymekiyan/algorithms/level/medium/RangeSumQueryMutable.java:64
↓ 2 callersMethodswap
(int[] a, int i1, int i2)
src/main/java/com/freetymekiyan/algorithms/other/WiggleSort.java:37
↓ 2 callersMethodswap
Swap two numbers without using a temporary variable
src/main/java/com/freetymekiyan/algorithms/level/medium/Permutations.java:45
↓ 2 callersMethodswap
(int[] nums, int i)
src/main/java/com/freetymekiyan/algorithms/level/medium/WiggleSort.java:37
↓ 2 callersMethodswap
(int[] num, int i, int j)
src/main/java/com/freetymekiyan/algorithms/level/medium/NextPermutation.java:47
↓ 2 callersMethodthreeSumReuseOnce
What changed to the original solution if one of the numbers can reused once? 1. When i is set, j can start from i instead of i + 1. 2. During two sum,
src/main/java/com/freetymekiyan/algorithms/other/ThreeSumReuseOnce.java:25
↓ 2 callersMethodtrailingZeroes
O(log5-n)
src/main/java/com/freetymekiyan/algorithms/level/easy/FactorialTrailingZeroes.java:19
↓ 2 callersMethodtwoSum
Hash Table. One-pass. O(n) Time. O(n) Space. As we traverse through the array, we may save what we've traversed to check if there is a number that can
src/main/java/com/freetymekiyan/algorithms/level/easy/TwoSum.java:42
↓ 2 callersMethodunion
(int[] ids, int p, int q)
src/main/java/com/freetymekiyan/algorithms/level/hard/LongestConsecutiveSeq.java:93
↓ 2 callersMethodupdate
1) Initialize index as index+1. 2) Do following while index is smaller than or equal to n. ...a) Add value to BITree[index] ...b) Go to parent of BITr
src/main/java/com/freetymekiyan/datastructures/BinaryIndexedTree.java:84
↓ 2 callersMethodwordBreak
DP. Bottom-up. Build a boolean array of size n+1 for break results at different lengths. Recurrence: dp[i] = dp[j] && dict.contains(s.substring(j, i))
src/main/java/com/freetymekiyan/algorithms/level/medium/WordBreak.java:40
↓ 1 callersMethodaccountsMerge
Union-Find. Each person is a connected component. Each email is just a graph node. Generate an ID for each email, since email is the key to decide whe
src/main/java/com/freetymekiyan/algorithms/level/medium/AccountsMerge.java:67
↓ 1 callersMethodaccountsMerge2
DFS. Build a graph to connect adjacent emails together. Traverse the graph. If the email is not visited, dfs to get all emails. Sort and add the name.
src/main/java/com/freetymekiyan/algorithms/level/medium/AccountsMerge.java:125
↓ 1 callersMethodaccountsMerge3
Union-Find with a separate class.
src/main/java/com/freetymekiyan/algorithms/level/medium/AccountsMerge.java:170
↓ 1 callersMethodaddBinary
Math. String. Initialize two pointers i and j at the end of a and b. Use one integer c for the carry. While i >= 0 or j >= 0 or c == 1: | Add char in
src/main/java/com/freetymekiyan/algorithms/level/easy/AddBinary.java:31
↓ 1 callersMethodaddBinary2
Math. String. From end to start, do it digit-by-digit. Get current digits of ab and b, add them up. Also use an integer to store carry from the previo
src/main/java/com/freetymekiyan/algorithms/level/easy/AddBinary.java:54
↓ 1 callersMethodaddDoubles
Math. We may separate the string with '.'. Then we will have the left and right parts. First deal with right part, adding from right to left. The shor
src/main/java/com/freetymekiyan/algorithms/other/AddTwoDoubles.java:30
↓ 1 callersMethodaddOperators
src/main/cpp/282_Expression_Add_Operators.cpp:49
↓ 1 callersMethodaddWord
Add a word reversely to Trie. This makes suffix search possible. In addition, we add the words index to the node if word[0,i] is a palindrome. So duri
src/main/java/com/freetymekiyan/algorithms/level/hard/PalindromePairs.java:131
↓ 1 callersMethodanagrams
Use map<String, Integer> Integer is initialized as the index, updated to -1 when the word is added to map to make sure that no duplicate situation hap
src/main/java/com/freetymekiyan/algorithms/level/medium/Anagrams.java:24
↓ 1 callersMethodapi
()
src/main/java/com/freetymekiyan/algorithms/other/RateLimiter.java:38
↓ 1 callersMethodasteroidCollision
O(n) Time, O(n) Space. Keep track of collisions using a Stack (represented by Deque in Java). For each asteroid, ast: | If stack is not empty, asteroi
src/main/java/com/freetymekiyan/algorithms/level/medium/Asteroids.java:60
↓ 1 callersMethodastroid
(String s)
src/main/java/com/freetymekiyan/algorithms/other/Astroid01.java:18
↓ 1 callersMethodbacktrack
Stop when k is 0, meaning that all k numbers are picked. | Add combination to result. For each i from start to n: | Add i to current combination that
src/main/java/com/freetymekiyan/algorithms/level/medium/Combinations.java:45
↓ 1 callersMethodbacktrack
(String s, int dot, List<String> res, String ip)
src/main/java/com/freetymekiyan/algorithms/level/medium/RestoreIpAddresses.java:28
↓ 1 callersMethodbacktrack
Stop condition: n is 1, return. If have at least two factors, dereference and add to result. Visit: For each i from start to sqrt(n): | If n is divisi
src/main/java/com/freetymekiyan/algorithms/level/medium/FactorCombinations.java:73
↓ 1 callersMethodbacktrack
(List<List<Integer>> res, int[] nums, int pos, List<Integer> subset)
src/main/java/com/freetymekiyan/algorithms/level/medium/Subsets.java:47
↓ 1 callersMethodbacktrack
Backtracking. DFS. Traverse a each node of a subset tree. For each number n in the nums array: | If n is a duplicate of previous number, skip. | Pick
src/main/java/com/freetymekiyan/algorithms/level/medium/Subsets2.java:53
↓ 1 callersMethodbacktrack
(List<List<Integer>> ans, List<Integer> comb, int k, int start, int n)
src/main/java/com/freetymekiyan/algorithms/level/medium/CombinationSum3.java:47
↓ 1 callersMethodbacktrack
Backtracking. Generate combinations position by position. Get current position's possible letters. Append to the combination so far. Pass the subset a
src/main/java/com/freetymekiyan/algorithms/level/medium/LetterCombinationsOfPhoneNum.java:67
↓ 1 callersMethodbacktrack
(TreeNode root, StringBuilder path, List<String> paths)
src/main/java/com/freetymekiyan/algorithms/level/easy/BinaryTreePaths.java:46
↓ 1 callersMethodbfs
This BFS is unlike word ladder 1, which we only care about the path length. This one cares about the graph structure, so we connect a string with it's
src/main/java/com/freetymekiyan/algorithms/level/hard/WordLadder2.java:81
↓ 1 callersMethodbfs
BFS. Set the starting grid to '0' to mark it as visited. Enqueue to start BFS. While queue is not empty: Get a grid from the queue. Add it's 4-adjacen
src/main/java/com/freetymekiyan/algorithms/level/medium/NumberOfIslands.java:74
↓ 1 callersMethodbfs
Topological Sort. BFS. Start from all nodes with 0 in-degree, which means no prerequisites. While queue is not empty: | Dequeue the next node, add it
src/main/java/com/freetymekiyan/algorithms/level/medium/CourseSchedule2.java:97
↓ 1 callersMethodbinarySearch
(int left, int right, int[] nums)
others/FindMinimuminRotatedSortedArray.java:27
↓ 1 callersMethodbtToCircularList
In-order traversal, iteratively. Left is previous. Right is next. In-order traverse the binary tree to create the linked list. When traversing a node,
src/main/java/com/freetymekiyan/algorithms/other/BinaryTreeToCircularDoublyLinkedList.java:28
↓ 1 callersMethodbtToCircularList2
Recursive. Recurrence relation: The final list is the connection of left subtree's list, root and right subtree's list. Base case: If a root is null,
src/main/java/com/freetymekiyan/algorithms/other/BinaryTreeToCircularDoublyLinkedList.java:61
↓ 1 callersMethodbtToCircularList3
(TreeNode root)
src/main/java/com/freetymekiyan/algorithms/other/BinaryTreeToCircularDoublyLinkedList.java:86
↓ 1 callersMethodbuildString
Recursive. Pre-order traversal. Append current node's val and a delimiter. Then recurse down to left and right subtrees. Base case: If node is null, a
src/main/java/com/freetymekiyan/algorithms/level/hard/SerializeAndDeserializeBinaryTree.java:66
↓ 1 callersMethodbuildTestList1
()
src/main/java/com/freetymekiyan/algorithms/level/medium/RemoveDuplicatesFromSortedList2.java:25
↓ 1 callersMethodbuildTestList2
()
src/main/java/com/freetymekiyan/algorithms/level/medium/RemoveDuplicatesFromSortedList2.java:42
↓ 1 callersMethodbuildTree
Poll a value string from the queue. If null node, return null. Create a tree node with value. Then build left and right subtrees recursively. Return t
src/main/java/com/freetymekiyan/algorithms/level/hard/SerializeAndDeserializeBinaryTree.java:94
← previousnext →201–300 of 1,974, ranked by callers