MCPcopy Create free account

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

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

↓ 1 callersMethodbuildTree
(int[] inorder, int[] postorder)
src/main/java/com/freetymekiyan/algorithms/level/medium/ConstructBinaryTree.java:17
↓ 1 callersMethodbuildTree
Bottom up approach, O(n) (Instead of top-down, O(nlogn)) <p> STEP 1: Take left n/2 nodes and recursively construct the left sub tree. <p> STEP 2: Afte
src/main/java/com/freetymekiyan/algorithms/level/medium/ConvertSortedListToBST.java:33
↓ 1 callersMethodbuildTrie
Build a trie from the words Store word in the ending node
src/main/java/com/freetymekiyan/algorithms/level/hard/WordSearch2.java:58
↓ 1 callersMethodburst
(int[][] memo, int[] nums, int left, int right)
src/main/java/com/freetymekiyan/algorithms/level/hard/BurstBalloons.java:42
↓ 1 callersMethodcalculate
src/main/cpp/224_Basic_Calculator.cpp:27
↓ 1 callersMethodcalculate
(char op, int a, int b)
src/main/java/com/freetymekiyan/algorithms/level/medium/DifferentWaysToAddParentheses.java:60
↓ 1 callersMethodcanJump
src/main/cpp/055_Jump_Game.cpp:25
↓ 1 callersMethodcheckDuplicatesWithinK
O(n) Time, O(n) Space Use Set to store elements within k Go through the array If not in map, put it and its index in map If in map, return true Otherw
src/main/java/com/freetymekiyan/algorithms/other/DupWithinKDistance.java:42
↓ 1 callersMethodcheckInclusion
Sliding window. Optimized. Generate count map for s1. Generate count map for s2, length is the same as s1. Maintain the second map as we traverse thro
src/main/java/com/freetymekiyan/algorithms/level/medium/PermutationInString.java:33
↓ 1 callersMethodcheckInclusion2
Two pointers. Use integer array to record letter count instead of map. Note that the letters not in S1 and letters drops to 0 must be distinguishable.
src/main/java/com/freetymekiyan/algorithms/level/medium/PermutationInString.java:80
↓ 1 callersMethodcheckInclusion3
Two pointers. The two pointers are representing a window in S2, such that: 1. The window contains only letters in S1 2. The letter frequency is smalle
src/main/java/com/freetymekiyan/algorithms/level/medium/PermutationInString.java:142
↓ 1 callersMethodcheckValidString
The range of left parentheses count. Use two integers to represent the range, lo and hi. lo increments by 1 if there is a '(', otherwise it decrements
src/main/java/com/freetymekiyan/algorithms/level/medium/ValidParenthesisString.java:43
↓ 1 callersMethodcollide
Recursive. Collision will keep happening if: 1. Stack is not empty. 2. Stack top is > 0. 3. Current asteroid is < 0. (Guaranteed when calling collide)
src/main/java/com/freetymekiyan/algorithms/level/medium/Asteroids.java:85
↓ 1 callersMethodcombinationSum2
src/main/cpp/040_Combination_Sum_II.cpp:62
↓ 1 callersMethodcombinationSum4
DP, Bottom-up. O(n^2) Time, O(n) Space. State: S[i] means the # of combinations that can reach sum i. Recurrent relation: S[i] = sum(S[i - nums[j]]),
src/main/java/com/freetymekiyan/algorithms/level/medium/CombinationSum4.java:51
↓ 1 callersMethodcombinationSum4TopDown
DP, Top-down, Memoization.
src/main/java/com/freetymekiyan/algorithms/level/medium/CombinationSum4.java:67
↓ 1 callersMethodcombine
src/main/cpp/077_Combinations.cpp:48
↓ 1 callersMethodcombine
Backtracking. From 1 to n.
src/main/java/com/freetymekiyan/algorithms/level/medium/Combinations.java:31
↓ 1 callersMethodcommonPrefix
Get length of two strings Loop over each char till one length runs out If same char, append it to result If not same, break Return result
src/main/java/com/freetymekiyan/algorithms/level/easy/LongestCommonPrefix.java:35
↓ 1 callersMethodcompareIgnoreCase
(char c1, char c2)
src/main/java/com/freetymekiyan/algorithms/level/easy/ValidPalindrome.java:44
↓ 1 callersMethodcompareTrees
(TreeNode root1, TreeNode root2)
src/main/java/com/freetymekiyan/algorithms/utils/Utils.java:122
↓ 1 callersMethodcompareVersion
Compare each level and compare the rest Note the input can be complex than the example, more dots, more zeros
src/main/java/com/freetymekiyan/algorithms/level/easy/CompareVersionNumbers.java:33
↓ 1 callersMethodconvert
Recursive. Convert a linked list and return the root of the binary search tree. Pick the middle point as the root. Convert left linked list to left su
src/main/java/com/freetymekiyan/algorithms/other/DoublyLinkedListToBinarySearchTree.java:19
↓ 1 callersMethodconvert
Modify in-order traversal. Previous node is the node before current root in sorted order, which is the tail. If head and tail are available, root can
src/main/java/com/freetymekiyan/algorithms/other/BinaryTreeToCircularDoublyLinkedList.java:107
↓ 1 callersMethodconvertToTitleRec
Recursive version, one line
src/main/java/com/freetymekiyan/algorithms/level/easy/ExcelSheetColTitle.java:56
↓ 1 callersMethodcountAndSay
(int n)
src/main/java/com/freetymekiyan/algorithms/level/easy/CountAndSay_38.java:19
↓ 1 callersMethodcountAndSayArray
(String cas)
src/main/java/com/freetymekiyan/algorithms/level/easy/CountAndSay_38.java:26
↓ 1 callersMethodcountBelow
(int[] nums, int target)
src/main/java/com/freetymekiyan/algorithms/level/hard/FindDupNum.java:54
↓ 1 callersMethodcountBits
DP. Recurrence Relation: f[i] = f[i / 2] + i % 2. It means that we can decompose the binary string of current integer into two parts: 1) the rightmost
src/main/java/com/freetymekiyan/algorithms/level/medium/CountingBits.java:46
↓ 1 callersMethodcountCornerRectangles
Hash table. A pair of 1's at current row can form a rectangle with another pair of ones at previous row. Save the number of pairs already found, n. Cu
src/main/java/com/freetymekiyan/algorithms/level/medium/NumberOfCornerRectangles.java:56
↓ 1 callersMethodcountCornerRectangles2
Save the iteration of pairs.
src/main/java/com/freetymekiyan/algorithms/level/medium/NumberOfCornerRectangles.java:78
↓ 1 callersMethodcountNodes
Count how many nodes in this subtree rooted from n. If we can modify the data structure, we can save the count with each node.
src/main/java/com/freetymekiyan/algorithms/level/medium/KthSmallestElementInABst.java:108
↓ 1 callersMethodcountWhileMergeSort
(long[] sums, int start, int end, int lower, int upper)
src/main/java/com/freetymekiyan/algorithms/level/hard/CountOfRangeSum.java:36
↓ 1 callersMethodcrossMidMaxSum
The max subarray sum cross the mid point. Must have nums[mid] since the array is continuous. Find the maximum of left side, then right side. The resul
src/main/java/com/freetymekiyan/algorithms/level/medium/MaximumSubarray.java:118
↓ 1 callersMethoddecompress
(String s)
src/main/java/com/freetymekiyan/algorithms/other/StringDecompression.java:24
↓ 1 callersMethoddelete
Tree. BST. Recursive. The Hibbard deletion. Two stages: Search for the node while tracking the parent. If the node is found, delete. Recursive delete
src/main/java/com/freetymekiyan/algorithms/other/DeleteANodeFromBinarySearchTree.java:38
↓ 1 callersMethoddeleteDuplicates
src/main/cpp/082_Remove_Duplicates_From_Sorted_Lists_II.cpp:33
↓ 1 callersMethoddeleteMin
()
src/main/java/com/freetymekiyan/datastructures/BST.java:119
↓ 1 callersMethoddeserialize
(String data)
src/main/java/com/freetymekiyan/algorithms/level/hard/SerializeAndDeserializeBinaryTree.java:82
↓ 1 callersMethoddetectCycle
(ListNode head)
others/LinkedListCycle_2.java:19
↓ 1 callersMethoddfs
Backtracking to generate all paths
src/main/java/com/freetymekiyan/algorithms/other/Graph.java:42
↓ 1 callersMethoddfs
(TreeNode root, StringBuilder sb, int[] max, int current, String[] res)
src/main/java/com/freetymekiyan/algorithms/other/BinaryTreeLongestPath.java:23
↓ 1 callersMethoddfs
(TreeNode node, StringBuilder path, List<String> paths, Set<TreeNode> visited)
src/main/java/com/freetymekiyan/algorithms/other/GraphPaths.java:34
↓ 1 callersMethoddfs
(int i, int j, int[][] mat)
src/main/java/com/freetymekiyan/algorithms/other/LongestIncreasingSequenceInMat.java:58
↓ 1 callersMethoddfs
(Graph G, Vertex<T> V, HashSet<Vertex<T>> set)
src/main/java/com/freetymekiyan/algorithms/other/IsGraphTree.java:29
↓ 1 callersMethoddfs
Backtrack the graph with distance map to generate all shortest paths. The graph provides all possible transformation of a word. The distance map makes
src/main/java/com/freetymekiyan/algorithms/level/hard/WordLadder2.java:134
↓ 1 callersMethoddfs
(int[] num, int pos, List<List<Integer>> res)
src/main/java/com/freetymekiyan/algorithms/level/hard/Permutations2.java:88
↓ 1 callersMethoddfs
Backtrack in the board Set a character to # to mark it as visited Remember to reset it after all 4 adjacent nodes are traversed <p> Get current char i
src/main/java/com/freetymekiyan/algorithms/level/hard/WordSearch2.java:84
↓ 1 callersMethoddfs
Save indices of each line in a list Retrieve the indices of each line when there is a solution
src/main/java/com/freetymekiyan/algorithms/level/hard/NQueens.java:60
↓ 1 callersMethoddfs
(int i, int left, char[] number, long low, long high, int[] count)
src/main/java/com/freetymekiyan/algorithms/level/hard/StrobogrammaticNumber3.java:37
↓ 1 callersMethoddfs
Backtracking
src/main/java/com/freetymekiyan/algorithms/level/hard/NQueens2.java:56
↓ 1 callersMethoddfs
(TreeNode root, int sum, List<Integer> path, List<List<Integer>> res)
src/main/java/com/freetymekiyan/algorithms/level/medium/PathSum2.java:46
↓ 1 callersMethoddfs
(List<List<Integer>> res, int level, TreeNode node)
src/main/java/com/freetymekiyan/algorithms/level/medium/BinaryTreeZigzagLevelOrderTraversal.java:84
↓ 1 callersMethoddfs
@return An array of two integers, the first one is maximum with current node; the second is without current node.
src/main/java/com/freetymekiyan/algorithms/level/medium/HouseRobber3.java:58
↓ 1 callersMethoddfs
Toposort. DFS. Check temporary mark. If temporary mark is true, there is a cycle. Return false. Set temporary mark to true. Visit all neighbors first.
src/main/java/com/freetymekiyan/algorithms/level/medium/CourseSchedule.java:122
↓ 1 callersMethoddfs
Statement: Given a graph node, return the cloned graph node. Sub-problem: Build one node. Complete task: Build current node. Build neighbors. Connect
src/main/java/com/freetymekiyan/algorithms/level/medium/CloneGraph.java:63
↓ 1 callersMethoddfs
(String start, String end, Map<String, List<String>> pairs, Map<String, List<Double>> values, Set<String> set,
src/main/java/com/freetymekiyan/algorithms/level/medium/EvaluateDivision.java:69
↓ 1 callersMethoddfs
(int n, int left, char[] number, List<String> result)
src/main/java/com/freetymekiyan/algorithms/level/medium/StrobogrammaticNumber2.java:76
↓ 1 callersMethoddfs
(ListNode head)
src/main/java/com/freetymekiyan/algorithms/level/medium/PlusOneLinkedList.java:68
↓ 1 callersMethoddfs
(int curr, int n, List<Integer> res)
src/main/java/com/freetymekiyan/algorithms/level/medium/LexicographicalNumbers.java:27
↓ 1 callersMethoddfs
(int[] num, int target)
src/main/java/com/freetymekiyan/algorithms/level/medium/CombinationSum2.java:37
↓ 1 callersMethoddfs
(int[] nums, int i, int S, int sum)
src/main/java/com/freetymekiyan/algorithms/level/medium/TargetSum.java:48
↓ 1 callersMethoddfs
DFS. Create next level's list. For each NestedInteger ni in nestedList: | If ni.isInteger(): | Add it to prev. | Else: | Add ni.getList() to next
src/main/java/com/freetymekiyan/algorithms/level/medium/NestedListWeightSum2.java:53
↓ 1 callersMethoddfs
Generate edges backward from target to root.
src/main/java/com/freetymekiyan/algorithms/level/medium/ClosestLeafInABinaryTree.java:104
↓ 1 callersMethoddfs
DFS. Recurrent relation: The value of the input expression depends on the values of sub-expressions. If T, return the value of left sub-expression. If
src/main/java/com/freetymekiyan/algorithms/level/medium/TernaryExpressionParser.java:115
↓ 1 callersMethoddfs
(TreeNode s, TreeNode t)
src/main/java/com/freetymekiyan/algorithms/level/easy/SubtreeOfAnotherTree.java:60
↓ 1 callersMethoddfs
DFS. Base case: 1) root is null, return 0. 2) If current node is a leaf, and it's from left, return it's value. The result is the sum of left leaves s
src/main/java/com/freetymekiyan/algorithms/level/easy/SumOfLeftLeaves.java:70
↓ 1 callersMethoddfs
(TreeNode n1, TreeNode n2)
src/main/java/com/freetymekiyan/algorithms/level/easy/SymmetricTree.java:93
↓ 1 callersMethoddfs
Like pre-order traversal. Visit current node. Add current node's value to its corresponding level. If the level doesn't exist, add an empty list first
src/main/java/com/freetymekiyan/algorithms/level/easy/BinaryTreeLevelOrderTraversal.java:86
↓ 1 callersMethoddfs
(char[] s, int pos, List<String> res)
src/main/java/com/freetymekiyan/algorithms/level/easy/LetterCasePermutation.java:43
↓ 1 callersMethoddfs
Post-order traversal. Modifies get depth of tree. root's depth is 1, but root's height is 0. The diameter of a node is left depth + right depth. So ju
src/main/java/com/freetymekiyan/algorithms/level/easy/DiameterOfBinaryTree.java:45
↓ 1 callersMethoddoPermutation
(int index, int[] num)
src/main/java/com/freetymekiyan/algorithms/level/medium/Permutations.java:81
↓ 1 callersMethodevalRPN
src/main/cpp/150_Evaluate_Reverse_Polish_Notation.cpp:25
↓ 1 callersMethodevaluate
(String expr)
src/main/java/com/freetymekiyan/algorithms/other/ArithmeticExpressionEvaluation.java:16
↓ 1 callersMethodexclusiveTime
Stack. With a pointer remembers the previous start/end timestamp. So that we can know how much time the current function spent.
src/main/java/com/freetymekiyan/algorithms/level/medium/ExclusiveTimeOfFunctions.java:55
↓ 1 callersMethodexist
Backtracking. For each character in board, start backtracking if the first character matches.
src/main/java/com/freetymekiyan/algorithms/level/medium/WordSearch.java:33
↓ 1 callersMethodexist2
(char[][] board, String word)
src/main/java/com/freetymekiyan/algorithms/level/medium/WordSearch.java:88
↓ 1 callersMethodfib
DP, top-down approach
src/main/java/com/freetymekiyan/algorithms/other/Fib.java:22
↓ 1 callersMethodfib2
DP, bottom-up approach
src/main/java/com/freetymekiyan/algorithms/other/Fib.java:32
↓ 1 callersMethodfib3
Recursion
src/main/java/com/freetymekiyan/algorithms/other/Fib.java:48
↓ 1 callersMethodfind
(TreeNode root, int t, Set<Integer> visited)
src/main/java/com/freetymekiyan/algorithms/level/medium/TwoSumIVBST.java:54
↓ 1 callersMethodfindDeepest
Backtracking If level > max, means a deeper node, update result and max level Find more possibility in left and right subtrees
src/main/java/com/freetymekiyan/algorithms/other/DeepestNode.java:25
↓ 1 callersMethodfindItinerary
src/main/cpp/332_Reconstruct_Itinerary.cpp:35
↓ 1 callersMethodfindKthLargest
Priority Queue O(n) + k O(logn)
src/main/java/com/freetymekiyan/algorithms/other/KthLargest.java:25
↓ 1 callersMethodfindKthLargest
Heap. Priority queue. O(nlogk) Time, O(k) Space. Create a min heap as a window. For each number in the array, add it to the heap. If heap size > k, po
src/main/java/com/freetymekiyan/algorithms/level/medium/KthLargestElementInAnArray.java:30
↓ 1 callersMethodfindKthLargest2
QuickSelect. Binary Search. Partition. O(nlogn) Time. Use partition algorithm in Quick Sort, which gives us the pivot's index. With that, we can then
src/main/java/com/freetymekiyan/algorithms/level/medium/KthLargestElementInAnArray.java:50
↓ 1 callersMethodfindKthLargest3
Try using start as pivot. What changes need to be done? mid now returns the ranking, not the index. So it can directly compare with k instead of k-1.
src/main/java/com/freetymekiyan/algorithms/level/medium/KthLargestElementInAnArray.java:118
↓ 1 callersMethodfindLadders
src/main/cpp/126_Word_Ladder_II.cpp:150
↓ 1 callersMethodfindLadders
BFS, DFS. The solution cannot be easily derived from Word Ladder 1 since we need to generate all possible paths. BFS by nature can find the shortest p
src/main/java/com/freetymekiyan/algorithms/level/hard/WordLadder2.java:56
↓ 1 callersMethodfindLca
If the tree's height is h, root is at level 0. The deepest leaves are at level h - 1, lowest level. If the LCA is at level x, the deepest leaves level
src/main/java/com/freetymekiyan/algorithms/other/LCAOfDeepestLeaves.java:25
↓ 1 callersMethodfindMax
(int[] A, int size)
src/main/java/com/freetymekiyan/algorithms/other/PancakeSorting.java:47
↓ 1 callersMethodfindMaxDiff
Find max and min sum contiguous subsequences separately Then get the difference
src/main/java/com/freetymekiyan/algorithms/other/MaxSubseqDifference.java:20
↓ 1 callersMethodfindMedianSortedArrays
src/main/cpp/004_Median_of_Two_Sorted_Array.cpp:25
↓ 1 callersMethodfindMedianSortedArrays
Binary Search. First figure out what we are to search for. There 2 cut points, 1 for each array, i for nums1, j for nums2. Then we have 4 smaller arra
src/main/java/com/freetymekiyan/algorithms/level/hard/MedianOfTwoSortedArrays.java:41
↓ 1 callersMethodfindMin
(int[] nums)
others/FindMinimuminRotatedSortedArray.java:20
↓ 1 callersMethodfindMin
Find the minimum of BST. O(logn) Time. If root is null, return null. If left subtree is null, return root itself. Otherwise return the minimum of left
src/main/java/com/freetymekiyan/algorithms/level/hard/DataStreamAsDisjointIntervals.java:166
↓ 1 callersMethodfindMinHeightTrees
(int n, int[][] edges)
src/main/java/com/freetymekiyan/algorithms/level/medium/MinimumHeightTrees.java:53
↓ 1 callersMethodfindMinIdx
Binary Search. Find the minimum value's index. Compare the number in the middle with the number at the end. If nums[mid] > nums[end], minimum in right
src/main/java/com/freetymekiyan/algorithms/level/hard/SearchInRotatedSortedArray.java:103
↓ 1 callersMethodfindMissingRanges
(int[] nums, int lower, int upper)
src/main/java/com/freetymekiyan/algorithms/level/medium/MissingRanges.java:25
↓ 1 callersMethodfindNumberOfLIS
DP. States: 1. Longest increasing sub-sequence length ends with nums[i], lengths[i] 2. # of longest increasing sub-sequence ends with nums[i], counts[
src/main/java/com/freetymekiyan/algorithms/level/medium/NumberOfLongestIncreasingSubsequence.java:43
← previousnext →301–400 of 1,974, ranked by callers