2024-07-11
1190. Reverse Substrings Between Each Pair of Parentheses
Topic: String, Stack
Difficulty: Medium
Problem:
You are given a string
Reverse the strings in each pair of matching parentheses, starting from the innermost one.
Your result should not contain any brackets.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
• It is guaranteed that all parentheses are balanced.
1190. Reverse Substrings Between Each Pair of Parentheses
Topic: String, Stack
Difficulty: Medium
Problem:
You are given a string
s that consists of lower case English letters and brackets.Reverse the strings in each pair of matching parentheses, starting from the innermost one.
Your result should not contain any brackets.
Example 1:
Input: s = "(abcd)"
Output: "dcba"
Example 2:
Input: s = "(u(love)i)"
Output: "iloveu"
Explanation: The substring "love" is reversed first, then the whole string is reversed.
Example 3:
Input: s = "(ed(et(oc))el)"
Output: "leetcode"
Explanation: First, we reverse the substring "oc", then "etco", and finally, the whole string.
Constraints:
•
1 <= s.length <= 2000•
s only contains lower case English characters and parentheses.• It is guaranteed that all parentheses are balanced.
2024-07-12
1717. Maximum Score From Removing Substrings
Topic: String, Stack, Greedy
Difficulty: Medium
Problem:
You are given a string
• Remove substring
• For example, when removing
• Remove substring
• For example, when removing
Return the maximum points you can gain after applying the above operations on
Example 1:
Example 2:
Constraints:
•
•
•
1717. Maximum Score From Removing Substrings
Topic: String, Stack, Greedy
Difficulty: Medium
Problem:
You are given a string
s and two integers x and y. You can perform two types of operations any number of times.• Remove substring
"ab" and gain x points.• For example, when removing
"ab" from "cabxbae" it becomes "cxbae".• Remove substring
"ba" and gain y points.• For example, when removing
"ba" from "cabxbae" it becomes "cabxe".Return the maximum points you can gain after applying the above operations on
s.Example 1:
Input: s = "cdbcbbaaabab", x = 4, y = 5
Output: 19
Explanation:
- Remove the "ba" underlined in "cdbcbbaaabab". Now, s = "cdbcbbaaab" and 5 points are added to the score.
- Remove the "ab" underlined in "cdbcbbaaab". Now, s = "cdbcbbaa" and 4 points are added to the score.
- Remove the "ba" underlined in "cdbcbbaa". Now, s = "cdbcba" and 5 points are added to the score.
- Remove the "ba" underlined in "cdbcba". Now, s = "cdbc" and 5 points are added to the score.
Total score = 5 + 4 + 5 + 5 = 19.
Example 2:
Input: s = "aabbaaxybbaabb", x = 5, y = 4
Output: 20
Constraints:
•
1 <= s.length <= 10^5•
1 <= x, y <= 10^4•
s consists of lowercase English letters.2024-07-13
2751. Robot Collisions
Topic: Array, Stack, Sorting, Simulation
Difficulty: Hard
Problem:
There are
You are given 0-indexed integer arrays
All robots start moving on the line simultaneously at the same speed in their given directions. If two robots ever share the same position while moving, they will collide.
If two robots collide, the robot with lower health is removed from the line, and the health of the other robot decreases by one. The surviving robot continues in the same direction it was going. If both robots have the same health, they are both removed from the line.
Your task is to determine the health of the robots that survive the collisions, in the same order that the robots were given, i.e. final heath of robot 1 (if survived), final health of robot 2 (if survived), and so on. If there are no survivors, return an empty array.
Return an array containing the health of the remaining robots (in the order they were given in the input), after no further collisions can occur.
Note: The positions may be unsorted.
Example 1:
Image: https://assets.leetcode.com/uploads/2023/05/15/image-20230516011718-12.png
Example 2:
Image: https://assets.leetcode.com/uploads/2023/05/15/image-20230516004433-7.png
Example 3:
Image: https://assets.leetcode.com/uploads/2023/05/15/image-20230516005114-9.png
Constraints:
•
•
•
• All values in
2751. Robot Collisions
Topic: Array, Stack, Sorting, Simulation
Difficulty: Hard
Problem:
There are
n 1-indexed robots, each having a position on a line, health, and movement direction.You are given 0-indexed integer arrays
positions, healths, and a string directions (directions[i] is either 'L' for left or 'R' for right). All integers in positions are unique.All robots start moving on the line simultaneously at the same speed in their given directions. If two robots ever share the same position while moving, they will collide.
If two robots collide, the robot with lower health is removed from the line, and the health of the other robot decreases by one. The surviving robot continues in the same direction it was going. If both robots have the same health, they are both removed from the line.
Your task is to determine the health of the robots that survive the collisions, in the same order that the robots were given, i.e. final heath of robot 1 (if survived), final health of robot 2 (if survived), and so on. If there are no survivors, return an empty array.
Return an array containing the health of the remaining robots (in the order they were given in the input), after no further collisions can occur.
Note: The positions may be unsorted.
Example 1:
Image: https://assets.leetcode.com/uploads/2023/05/15/image-20230516011718-12.png
Input: positions = [5,4,3,2,1], healths = [2,17,9,15,10], directions = "RRRRR"
Output: [2,17,9,15,10]
Explanation: No collision occurs in this example, since all robots are moving in the same direction. So, the health of the robots in order from the first robot is returned, [2, 17, 9, 15, 10].
Example 2:
Image: https://assets.leetcode.com/uploads/2023/05/15/image-20230516004433-7.png
Input: positions = [3,5,2,6], healths = [10,10,15,12], directions = "RLRL"
Output: [14]
Explanation: There are 2 collisions in this example. Firstly, robot 1 and robot 2 will collide, and since both have the same health, they will be removed from the line. Next, robot 3 and robot 4 will collide and since robot 4's health is smaller, it gets removed, and robot 3's health becomes 15 - 1 = 14. Only robot 3 remains, so we return [14].
Example 3:
Image: https://assets.leetcode.com/uploads/2023/05/15/image-20230516005114-9.png
Input: positions = [1,2,5,6], healths = [10,10,11,11], directions = "RLRL"
Output: []
Explanation: Robot 1 and robot 2 will collide and since both have the same health, they are both removed. Robot 3 and 4 will collide and since both have the same health, they are both removed. So, we return an empty array, [].
Constraints:
•
1 <= positions.length == healths.length == directions.length == n <= 10^5•
1 <= positions[i], healths[i] <= 10^9•
directions[i] == 'L' or directions[i] == 'R'• All values in
positions are distinct2024-07-14
726. Number of Atoms
Topic: Hash Table, String, Stack, Sorting
Difficulty: Hard
Problem:
Given a string
The atomic element always starts with an uppercase character, then zero or more lowercase letters, representing the name.
One or more digits representing that element's count may follow if the count is greater than
• For example,
Two formulas are concatenated together to produce another formula.
• For example,
A formula placed in parentheses, and a count (optionally added) is also a formula.
• For example,
Return the count of all elements as a string in the following form: the first name (in sorted order), followed by its count (if that count is more than
The test cases are generated so that all the values in the output fit in a 32-bit integer.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
726. Number of Atoms
Topic: Hash Table, String, Stack, Sorting
Difficulty: Hard
Problem:
Given a string
formula representing a chemical formula, return the count of each atom.The atomic element always starts with an uppercase character, then zero or more lowercase letters, representing the name.
One or more digits representing that element's count may follow if the count is greater than
1. If the count is 1, no digits will follow.• For example,
"H2O" and "H2O2" are possible, but "H1O2" is impossible.Two formulas are concatenated together to produce another formula.
• For example,
"H2O2He3Mg4" is also a formula.A formula placed in parentheses, and a count (optionally added) is also a formula.
• For example,
"(H2O2)" and "(H2O2)3" are formulas.Return the count of all elements as a string in the following form: the first name (in sorted order), followed by its count (if that count is more than
1), followed by the second name (in sorted order), followed by its count (if that count is more than 1), and so on.The test cases are generated so that all the values in the output fit in a 32-bit integer.
Example 1:
Input: formula = "H2O"
Output: "H2O"
Explanation: The count of elements are {'H': 2, 'O': 1}.
Example 2:
Input: formula = "Mg(OH)2"
Output: "H2MgO2"
Explanation: The count of elements are {'H': 2, 'Mg': 1, 'O': 2}.
Example 3:
Input: formula = "K4(ON(SO3)2)2"
Output: "K4N2O14S4"
Explanation: The count of elements are {'K': 4, 'N': 2, 'O': 14, 'S': 4}.
Constraints:
•
1 <= formula.length <= 1000•
formula consists of English letters, digits, '(', and ')'.•
formula is always valid.2024-07-15
2196. Create Binary Tree From Descriptions
Topic: Array, Hash Table, Tree, Binary Tree
Difficulty: Medium
Problem:
You are given a 2D integer array
• If
• If
Construct the binary tree described by
The test cases will be generated such that the binary tree is valid.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/02/09/example1drawio.png
Example 2:
Image: https://assets.leetcode.com/uploads/2022/02/09/example2drawio.png
Constraints:
•
•
•
•
• The binary tree described by
2196. Create Binary Tree From Descriptions
Topic: Array, Hash Table, Tree, Binary Tree
Difficulty: Medium
Problem:
You are given a 2D integer array
descriptions where descriptions[i] = [parent_i, child_i, isLeft_i] indicates that parent_i is the parent of child_i in a binary tree of unique values. Furthermore,• If
isLeft_i == 1, then child_i is the left child of parent_i.• If
isLeft_i == 0, then child_i is the right child of parent_i.Construct the binary tree described by
descriptions and return its root.The test cases will be generated such that the binary tree is valid.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/02/09/example1drawio.png
Input: descriptions = [[20,15,1],[20,17,0],[50,20,1],[50,80,0],[80,19,1]]
Output: [50,20,80,15,17,19]
Explanation: The root node is the node with value 50 since it has no parent.
The resulting binary tree is shown in the diagram.
Example 2:
Image: https://assets.leetcode.com/uploads/2022/02/09/example2drawio.png
Input: descriptions = [[1,2,1],[2,3,0],[3,4,1]]
Output: [1,2,null,null,3,4]
Explanation: The root node is the node with value 1 since it has no parent.
The resulting binary tree is shown in the diagram.
Constraints:
•
1 <= descriptions.length <= 10^4•
descriptions[i].length == 3•
1 <= parent_i, child_i <= 10^5•
0 <= isLeft_i <= 1• The binary tree described by
descriptions is valid.2024-07-16
2096. Step-By-Step Directions From a Binary Tree Node to Another
Topic: String, Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
You are given the
Find the shortest path starting from node
•
•
•
Return the step-by-step directions of the shortest path from node
Example 1:
Image: https://assets.leetcode.com/uploads/2021/11/15/eg1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2021/11/15/eg2.png
Constraints:
• The number of nodes in the tree is
•
•
• All the values in the tree are unique.
•
•
2096. Step-By-Step Directions From a Binary Tree Node to Another
Topic: String, Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
You are given the
root of a binary tree with n nodes. Each node is uniquely assigned a value from 1 to n. You are also given an integer startValue representing the value of the start node s, and a different integer destValue representing the value of the destination node t.Find the shortest path starting from node
s and ending at node t. Generate step-by-step directions of such path as a string consisting of only the uppercase letters 'L', 'R', and 'U'. Each letter indicates a specific direction:•
'L' means to go from a node to its left child node.•
'R' means to go from a node to its right child node.•
'U' means to go from a node to its parent node.Return the step-by-step directions of the shortest path from node
s to node t.Example 1:
Image: https://assets.leetcode.com/uploads/2021/11/15/eg1.png
Input: root = [5,1,2,3,null,6,4], startValue = 3, destValue = 6
Output: "UURL"
Explanation: The shortest path is: 3 → 1 → 5 → 2 → 6.
Example 2:
Image: https://assets.leetcode.com/uploads/2021/11/15/eg2.png
Input: root = [2,1], startValue = 2, destValue = 1
Output: "L"
Explanation: The shortest path is: 2 → 1.
Constraints:
• The number of nodes in the tree is
n.•
2 <= n <= 10^5•
1 <= Node.val <= n• All the values in the tree are unique.
•
1 <= startValue, destValue <= n•
startValue != destValue2024-07-17
1110. Delete Nodes And Return Forest
Topic: Array, Hash Table, Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given the
After deleting all nodes with a value in
Return the roots of the trees in the remaining forest. You may return the result in any order.
Example 1:
Image: https://assets.leetcode.com/uploads/2019/07/01/screen-shot-2019-07-01-at-53836-pm.png
Example 2:
Constraints:
• The number of nodes in the given tree is at most
• Each node has a distinct value between
•
•
1110. Delete Nodes And Return Forest
Topic: Array, Hash Table, Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given the
root of a binary tree, each node in the tree has a distinct value.After deleting all nodes with a value in
to_delete, we are left with a forest (a disjoint union of trees).Return the roots of the trees in the remaining forest. You may return the result in any order.
Example 1:
Image: https://assets.leetcode.com/uploads/2019/07/01/screen-shot-2019-07-01-at-53836-pm.png
Input: root = [1,2,3,4,5,6,7], to_delete = [3,5]
Output: [[1,2,null,4],[6],[7]]
Example 2:
Input: root = [1,2,4,null,3], to_delete = [3]
Output: [[1,2,4]]
Constraints:
• The number of nodes in the given tree is at most
1000.• Each node has a distinct value between
1 and 1000.•
to_delete.length <= 1000•
to_delete contains distinct values between 1 and 1000.2024-07-18
1530. Number of Good Leaf Nodes Pairs
Topic: Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
You are given the
Return the number of good leaf node pairs in the tree.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/07/09/e1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/07/09/e2.jpg
Example 3:
Constraints:
• The number of nodes in the
•
•
1530. Number of Good Leaf Nodes Pairs
Topic: Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
You are given the
root of a binary tree and an integer distance. A pair of two different leaf nodes of a binary tree is said to be good if the length of the shortest path between them is less than or equal to distance.Return the number of good leaf node pairs in the tree.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/07/09/e1.jpg
Input: root = [1,2,3,null,4], distance = 3
Output: 1
Explanation: The leaf nodes of the tree are 3 and 4 and the length of the shortest path between them is 3. This is the only good pair.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/07/09/e2.jpg
Input: root = [1,2,3,4,5,6,7], distance = 3
Output: 2
Explanation: The good pairs are [4,5] and [6,7] with shortest path = 2. The pair [4,6] is not good because the length of ther shortest path between them is 4.
Example 3:
Input: root = [7,1,4,6,null,5,3,null,null,null,null,null,2], distance = 3
Output: 1
Explanation: The only good pair is [2,5].
Constraints:
• The number of nodes in the
tree is in the range [1, 2^10].•
1 <= Node.val <= 100•
1 <= distance <= 102024-07-19
1380. Lucky Numbers in a Matrix
Topic: Array, Matrix
Difficulty: Easy
Problem:
Given an
A lucky number is an element of the matrix such that it is the minimum element in its row and maximum in its column.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
• All elements in the matrix are distinct.
1380. Lucky Numbers in a Matrix
Topic: Array, Matrix
Difficulty: Easy
Problem:
Given an
m x n matrix of distinct numbers, return all lucky numbers in the matrix in any order.A lucky number is an element of the matrix such that it is the minimum element in its row and maximum in its column.
Example 1:
Input: matrix = [[3,7,8],[9,11,13],[15,16,17]]
Output: [15]
Explanation: 15 is the only lucky number since it is the minimum in its row and the maximum in its column.
Example 2:
Input: matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]
Output: [12]
Explanation: 12 is the only lucky number since it is the minimum in its row and the maximum in its column.
Example 3:
Input: matrix = [[7,8],[1,2]]
Output: [7]
Explanation: 7 is the only lucky number since it is the minimum in its row and the maximum in its column.
Constraints:
•
m == mat.length•
n == mat[i].length•
1 <= n, m <= 50•
1 <= matrix[i][j] <= 10^5.• All elements in the matrix are distinct.
2024-07-20
1605. Find Valid Matrix Given Row and Column Sums
Topic: Array, Greedy, Matrix
Difficulty: Medium
Problem:
You are given two arrays
Find any matrix of non-negative integers of size
Return a 2D array representing any matrix that fulfills the requirements. It's guaranteed that at least one matrix that fulfills the requirements exists.
Example 1:
Example 2:
Constraints:
•
•
•
1605. Find Valid Matrix Given Row and Column Sums
Topic: Array, Greedy, Matrix
Difficulty: Medium
Problem:
You are given two arrays
rowSum and colSum of non-negative integers where rowSum[i] is the sum of the elements in the i^th row and colSum[j] is the sum of the elements of the j^th column of a 2D matrix. In other words, you do not know the elements of the matrix, but you do know the sums of each row and column.Find any matrix of non-negative integers of size
rowSum.length x colSum.length that satisfies the rowSum and colSum requirements.Return a 2D array representing any matrix that fulfills the requirements. It's guaranteed that at least one matrix that fulfills the requirements exists.
Example 1:
Input: rowSum = [3,8], colSum = [4,7]
Output: [[3,0],
[1,7]]
Explanation:
0^th row: 3 + 0 = 3 == rowSum[0]
1^st row: 1 + 7 = 8 == rowSum[1]
0^th column: 3 + 1 = 4 == colSum[0]
1^st column: 0 + 7 = 7 == colSum[1]
The row and column sums match, and all matrix elements are non-negative.
Another possible matrix is: [[1,2],
[3,5]]
Example 2:
Input: rowSum = [5,7,10], colSum = [8,6,8]
Output: [[0,5,0],
[6,1,0],
[2,0,8]]
Constraints:
•
1 <= rowSum.length, colSum.length <= 500•
0 <= rowSum[i], colSum[i] <= 10^8•
sum(rowSum) == sum(colSum)2024-07-21
2392. Build a Matrix With Conditions
Topic: Array, Graph, Topological Sort, Matrix
Difficulty: Hard
Problem:
You are given a positive integer
• a 2D integer array
• a 2D integer array
The two arrays contain integers from
You have to build a
The matrix should also satisfy the following conditions:
• The number
• The number
Return any matrix that satisfies the conditions. If no answer exists, return an empty matrix.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/07/06/gridosdrawio.png
Example 2:
Constraints:
•
•
•
•
•
•
2392. Build a Matrix With Conditions
Topic: Array, Graph, Topological Sort, Matrix
Difficulty: Hard
Problem:
You are given a positive integer
k. You are also given:• a 2D integer array
rowConditions of size n where rowConditions[i] = [above_i, below_i], and• a 2D integer array
colConditions of size m where colConditions[i] = [left_i, right_i].The two arrays contain integers from
1 to k.You have to build a
k x k matrix that contains each of the numbers from 1 to k exactly once. The remaining cells should have the value 0.The matrix should also satisfy the following conditions:
• The number
above_i should appear in a row that is strictly above the row at which the number below_i appears for all i from 0 to n - 1.• The number
left_i should appear in a column that is strictly left of the column at which the number right_i appears for all i from 0 to m - 1.Return any matrix that satisfies the conditions. If no answer exists, return an empty matrix.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/07/06/gridosdrawio.png
Input: k = 3, rowConditions = [[1,2],[3,2]], colConditions = [[2,1],[3,2]]
Output: [[3,0,0],[0,0,1],[0,2,0]]
Explanation: The diagram above shows a valid example of a matrix that satisfies all the conditions.
The row conditions are the following:
- Number 1 is in row 1, and number 2 is in row 2, so 1 is above 2 in the matrix.
- Number 3 is in row 0, and number 2 is in row 2, so 3 is above 2 in the matrix.
The column conditions are the following:
- Number 2 is in column 1, and number 1 is in column 2, so 2 is left of 1 in the matrix.
- Number 3 is in column 0, and number 2 is in column 1, so 3 is left of 2 in the matrix.
Note that there may be multiple correct answers.
Example 2:
Input: k = 3, rowConditions = [[1,2],[2,3],[3,1],[2,3]], colConditions = [[2,1]]
Output: []
Explanation: From the first two conditions, 3 has to be below 1 but the third conditions needs 3 to be above 1 to be satisfied.
No matrix can satisfy all the conditions, so we return the empty matrix.
Constraints:
•
2 <= k <= 400•
1 <= rowConditions.length, colConditions.length <= 10^4•
rowConditions[i].length == colConditions[i].length == 2•
1 <= above_i, below_i, left_i, right_i <= k•
above_i != below_i•
left_i != right_i2024-07-22
2418. Sort the People
Topic: Array, Hash Table, String, Sorting
Difficulty: Easy
Problem:
You are given an array of strings
For each index
Return
Example 1:
Example 2:
Constraints:
•
•
•
•
•
• All the values of
2418. Sort the People
Topic: Array, Hash Table, String, Sorting
Difficulty: Easy
Problem:
You are given an array of strings
names, and an array heights that consists of distinct positive integers. Both arrays are of length n.For each index
i, names[i] and heights[i] denote the name and height of the i^th person.Return
names sorted in descending order by the people's heights.Example 1:
Input: names = ["Mary","John","Emma"], heights = [180,165,170]
Output: ["Mary","Emma","John"]
Explanation: Mary is the tallest, followed by Emma and John.
Example 2:
Input: names = ["Alice","Bob","Bob"], heights = [155,185,150]
Output: ["Bob","Alice","Bob"]
Explanation: The first Bob is the tallest, followed by Alice and the second Bob.
Constraints:
•
n == names.length == heights.length•
1 <= n <= 10^3•
1 <= names[i].length <= 20•
1 <= heights[i] <= 10^5•
names[i] consists of lower and upper case English letters.• All the values of
heights are distinct.2024-07-23
1636. Sort Array by Increasing Frequency
Topic: Array, Hash Table, Sorting
Difficulty: Easy
Problem:
Given an array of integers
Return the sorted array.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1636. Sort Array by Increasing Frequency
Topic: Array, Hash Table, Sorting
Difficulty: Easy
Problem:
Given an array of integers
nums, sort the array in increasing order based on the frequency of the values. If multiple values have the same frequency, sort them in decreasing order.Return the sorted array.
Example 1:
Input: nums = [1,1,2,2,2,3]
Output: [3,1,1,2,2,2]
Explanation: '3' has a frequency of 1, '1' has a frequency of 2, and '2' has a frequency of 3.
Example 2:
Input: nums = [2,3,1,3,2]
Output: [1,3,3,2,2]
Explanation: '2' and '3' both have a frequency of 2, so they are sorted in decreasing order.
Example 3:
Input: nums = [-1,1,-6,4,5,-6,1,4,1]
Output: [5,-1,4,4,-6,-6,1,1,1]
Constraints:
•
1 <= nums.length <= 100•
-100 <= nums[i] <= 1002024-07-24
2191. Sort the Jumbled Numbers
Topic: Array, Sorting
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
The mapped value of an integer is the new integer obtained by replacing each occurrence of digit
You are also given another integer array
Notes:
• Elements with the same mapped values should appear in the same relative order as in the input.
• The elements of
Example 1:
Example 2:
Constraints:
•
•
• All the values of
•
•
2191. Sort the Jumbled Numbers
Topic: Array, Sorting
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
mapping which represents the mapping rule of a shuffled decimal system. mapping[i] = j means digit i should be mapped to digit j in this system.The mapped value of an integer is the new integer obtained by replacing each occurrence of digit
i in the integer with mapping[i] for all 0 <= i <= 9.You are also given another integer array
nums. Return the array nums sorted in non-decreasing order based on the mapped values of its elements.Notes:
• Elements with the same mapped values should appear in the same relative order as in the input.
• The elements of
nums should only be sorted based on their mapped values and not be replaced by them.Example 1:
Input: mapping = [8,9,4,0,2,1,3,5,7,6], nums = [991,338,38]
Output: [338,38,991]
Explanation:
Map the number 991 as follows:
1. mapping[9] = 6, so all occurrences of the digit 9 will become 6.
2. mapping[1] = 9, so all occurrences of the digit 1 will become 9.
Therefore, the mapped value of 991 is 669.
338 maps to 007, or 7 after removing the leading zeros.
38 maps to 07, which is also 7 after removing leading zeros.
Since 338 and 38 share the same mapped value, they should remain in the same relative order, so 338 comes before 38.
Thus, the sorted array is [338,38,991].
Example 2:
Input: mapping = [0,1,2,3,4,5,6,7,8,9], nums = [789,456,123]
Output: [123,456,789]
Explanation: 789 maps to 789, 456 maps to 456, and 123 maps to 123. Thus, the sorted array is [123,456,789].
Constraints:
•
mapping.length == 10•
0 <= mapping[i] <= 9• All the values of
mapping[i] are unique.•
1 <= nums.length <= 3 * 10^4•
0 <= nums[i] < 10^92024-07-25
912. Sort an Array
Topic: Array, Divide and Conquer, Sorting, Heap (Priority Queue), Merge Sort, Bucket Sort, Radix Sort, Counting Sort
Difficulty: Medium
Problem:
Given an array of integers
You must solve the problem without using any built-in functions in
Example 1:
Example 2:
Constraints:
•
•
912. Sort an Array
Topic: Array, Divide and Conquer, Sorting, Heap (Priority Queue), Merge Sort, Bucket Sort, Radix Sort, Counting Sort
Difficulty: Medium
Problem:
Given an array of integers
nums, sort the array in ascending order and return it.You must solve the problem without using any built-in functions in
O(nlog(n)) time complexity and with the smallest space complexity possible.Example 1:
Input: nums = [5,2,3,1]
Output: [1,2,3,5]
Explanation: After sorting the array, the positions of some numbers are not changed (for example, 2 and 3), while the positions of other numbers are changed (for example, 1 and 5).
Example 2:
Input: nums = [5,1,1,2,0,0]
Output: [0,0,1,1,2,5]
Explanation: Note that the values of nums are not necessairly unique.
Constraints:
•
1 <= nums.length <= 5 * 10^4•
-5 * 10^4 <= nums[i] <= 5 * 10^42024-07-26
1334. Find the City With the Smallest Number of Neighbors at a Threshold Distance
Topic: Dynamic Programming, Graph, Shortest Path
Difficulty: Medium
Problem:
There are
Return the city with the smallest number of cities that are reachable through some path and whose distance is at most
Notice that the distance of a path connecting cities i and j is equal to the sum of the edges' weights along that path.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/01/16/find_the_city_01.png
Example 2:
Image: https://assets.leetcode.com/uploads/2020/01/16/find_the_city_02.png
Constraints:
•
•
•
•
•
• All pairs
1334. Find the City With the Smallest Number of Neighbors at a Threshold Distance
Topic: Dynamic Programming, Graph, Shortest Path
Difficulty: Medium
Problem:
There are
n cities numbered from 0 to n-1. Given the array edges where edges[i] = [from_i, to_i, weight_i] represents a bidirectional and weighted edge between cities from_i and to_i, and given the integer distanceThreshold.Return the city with the smallest number of cities that are reachable through some path and whose distance is at most
distanceThreshold, If there are multiple such cities, return the city with the greatest number.Notice that the distance of a path connecting cities i and j is equal to the sum of the edges' weights along that path.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/01/16/find_the_city_01.png
Input: n = 4, edges = [[0,1,3],[1,2,1],[1,3,4],[2,3,1]], distanceThreshold = 4
Output: 3
Explanation: The figure above describes the graph.
The neighboring cities at a distanceThreshold = 4 for each city are:
City 0 -> [City 1, City 2]
City 1 -> [City 0, City 2, City 3]
City 2 -> [City 0, City 1, City 3]
City 3 -> [City 1, City 2]
Cities 0 and 3 have 2 neighboring cities at a distanceThreshold = 4, but we have to return city 3 since it has the greatest number.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/01/16/find_the_city_02.png
Input: n = 5, edges = [[0,1,2],[0,4,8],[1,2,3],[1,4,2],[2,3,1],[3,4,1]], distanceThreshold = 2
Output: 0
Explanation: The figure above describes the graph.
The neighboring cities at a distanceThreshold = 2 for each city are:
City 0 -> [City 1]
City 1 -> [City 0, City 4]
City 2 -> [City 3, City 4]
City 3 -> [City 2, City 4]
City 4 -> [City 1, City 2, City 3]
The city 0 has 1 neighboring city at a distanceThreshold = 2.
Constraints:
•
2 <= n <= 100•
1 <= edges.length <= n * (n - 1) / 2•
edges[i].length == 3•
0 <= from_i < to_i < n•
1 <= weight_i, distanceThreshold <= 10^4• All pairs
(from_i, to_i) are distinct.2024-07-27
2976. Minimum Cost to Convert String I
Topic: Array, String, Graph, Shortest Path
Difficulty: Medium
Problem:
You are given two 0-indexed strings
You start with the string
Return the minimum cost to convert the string
Note that there may exist indices
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
•
•
2976. Minimum Cost to Convert String I
Topic: Array, String, Graph, Shortest Path
Difficulty: Medium
Problem:
You are given two 0-indexed strings
source and target, both of length n and consisting of lowercase English letters. You are also given two 0-indexed character arrays original and changed, and an integer array cost, where cost[i] represents the cost of changing the character original[i] to the character changed[i].You start with the string
source. In one operation, you can pick a character x from the string and change it to the character y at a cost of z if there exists any index j such that cost[j] == z, original[j] == x, and changed[j] == y.Return the minimum cost to convert the string
source to the string target using any number of operations. If it is impossible to convert source to target, return -1.Note that there may exist indices
i, j such that original[j] == original[i] and changed[j] == changed[i].Example 1:
Input: source = "abcd", target = "acbe", original = ["a","b","c","c","e","d"], changed = ["b","c","b","e","b","e"], cost = [2,5,5,1,2,20]
Output: 28
Explanation: To convert the string "abcd" to string "acbe":
- Change value at index 1 from 'b' to 'c' at a cost of 5.
- Change value at index 2 from 'c' to 'e' at a cost of 1.
- Change value at index 2 from 'e' to 'b' at a cost of 2.
- Change value at index 3 from 'd' to 'e' at a cost of 20.
The total cost incurred is 5 + 1 + 2 + 20 = 28.
It can be shown that this is the minimum possible cost.
Example 2:
Input: source = "aaaa", target = "bbbb", original = ["a","c"], changed = ["c","b"], cost = [1,2]
Output: 12
Explanation: To change the character 'a' to 'b' change the character 'a' to 'c' at a cost of 1, followed by changing the character 'c' to 'b' at a cost of 2, for a total cost of 1 + 2 = 3. To change all occurrences of 'a' to 'b', a total cost of 3 * 4 = 12 is incurred.
Example 3:
Input: source = "abcd", target = "abce", original = ["a"], changed = ["e"], cost = [10000]
Output: -1
Explanation: It is impossible to convert source to target because the value at index 3 cannot be changed from 'd' to 'e'.
Constraints:
•
1 <= source.length == target.length <= 10^5•
source, target consist of lowercase English letters.•
1 <= cost.length == original.length == changed.length <= 2000•
original[i], changed[i] are lowercase English letters.•
1 <= cost[i] <= 10^6•
original[i] != changed[i]2024-07-28
2045. Second Minimum Time to Reach Destination
Topic: Breadth-First Search, Graph, Shortest Path
Difficulty: Hard
Problem:
A city is represented as a bi-directional connected graph with
Each vertex has a traffic signal which changes its color from green to red and vice versa every
The second minimum value is defined as the smallest value strictly larger than the minimum value.
• For example the second minimum value of
Given
Notes:
• You can go through any vertex any number of times, including
• You can assume that when the journey starts, all signals have just turned green.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/09/29/e1.png
Image: https://assets.leetcode.com/uploads/2021/09/29/e2.png
Example 2:
Image: https://assets.leetcode.com/uploads/2021/09/29/eg2.png
Constraints:
•
•
•
•
•
• There are no duplicate edges.
• Each vertex can be reached directly or indirectly from every other vertex.
•
2045. Second Minimum Time to Reach Destination
Topic: Breadth-First Search, Graph, Shortest Path
Difficulty: Hard
Problem:
A city is represented as a bi-directional connected graph with
n vertices where each vertex is labeled from 1 to n (inclusive). The edges in the graph are represented as a 2D integer array edges, where each edges[i] = [u_i, v_i] denotes a bi-directional edge between vertex u_i and vertex v_i. Every vertex pair is connected by at most one edge, and no vertex has an edge to itself. The time taken to traverse any edge is time minutes.Each vertex has a traffic signal which changes its color from green to red and vice versa every
change minutes. All signals change at the same time. You can enter a vertex at any time, but can leave a vertex only when the signal is green. You cannot wait at a vertex if the signal is green.The second minimum value is defined as the smallest value strictly larger than the minimum value.
• For example the second minimum value of
[2, 3, 4] is 3, and the second minimum value of [2, 2, 4] is 4.Given
n, edges, time, and change, return the second minimum time it will take to go from vertex 1 to vertex n.Notes:
• You can go through any vertex any number of times, including
1 and n.• You can assume that when the journey starts, all signals have just turned green.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/09/29/e1.png
Image: https://assets.leetcode.com/uploads/2021/09/29/e2.png
Input: n = 5, edges = [[1,2],[1,3],[1,4],[3,4],[4,5]], time = 3, change = 5
Output: 13
Explanation:
The figure on the left shows the given graph.
The blue path in the figure on the right is the minimum time path.
The time taken is:
- Start at 1, time elapsed=0
- 1 -> 4: 3 minutes, time elapsed=3
- 4 -> 5: 3 minutes, time elapsed=6
Hence the minimum time needed is 6 minutes.
The red path shows the path to get the second minimum time.
- Start at 1, time elapsed=0
- 1 -> 3: 3 minutes, time elapsed=3
- 3 -> 4: 3 minutes, time elapsed=6
- Wait at 4 for 4 minutes, time elapsed=10
- 4 -> 5: 3 minutes, time elapsed=13
Hence the second minimum time is 13 minutes.
Example 2:
Image: https://assets.leetcode.com/uploads/2021/09/29/eg2.png
Input: n = 2, edges = [[1,2]], time = 3, change = 2
Output: 11
Explanation:
The minimum time path is 1 -> 2 with time = 3 minutes.
The second minimum time path is 1 -> 2 -> 1 -> 2 with time = 11 minutes.
Constraints:
•
2 <= n <= 10^4•
n - 1 <= edges.length <= min(2 * 10^4, n * (n - 1) / 2)•
edges[i].length == 2•
1 <= u_i, v_i <= n•
u_i != v_i• There are no duplicate edges.
• Each vertex can be reached directly or indirectly from every other vertex.
•
1 <= time, change <= 10^32024-07-29
1395. Count Number of Teams
Topic: Array, Dynamic Programming, Binary Indexed Tree
Difficulty: Medium
Problem:
There are
You have to form a team of 3 soldiers amongst them under the following rules:
• Choose 3 soldiers with index (
• A team is valid if: (
Return the number of teams you can form given the conditions. (soldiers can be part of multiple teams).
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
• All the integers in
1395. Count Number of Teams
Topic: Array, Dynamic Programming, Binary Indexed Tree
Difficulty: Medium
Problem:
There are
n soldiers standing in a line. Each soldier is assigned a unique rating value.You have to form a team of 3 soldiers amongst them under the following rules:
• Choose 3 soldiers with index (
i, j, k) with rating (rating[i], rating[j], rating[k]).• A team is valid if: (
rating[i] < rating[j] < rating[k]) or (rating[i] > rating[j] > rating[k]) where (0 <= i < j < k < n).Return the number of teams you can form given the conditions. (soldiers can be part of multiple teams).
Example 1:
Input: rating = [2,5,3,4,1]
Output: 3
Explanation: We can form three teams given the conditions. (2,3,4), (5,4,1), (5,3,1).
Example 2:
Input: rating = [2,1,3]
Output: 0
Explanation: We can't form any team given the conditions.
Example 3:
Input: rating = [1,2,3,4]
Output: 4
Constraints:
•
n == rating.length•
3 <= n <= 1000•
1 <= rating[i] <= 10^5• All the integers in
rating are unique.2024-07-30
1653. Minimum Deletions to Make String Balanced
Topic: String, Dynamic Programming, Stack
Difficulty: Medium
Problem:
You are given a string
You can delete any number of characters in
Return the minimum number of deletions needed to make
Example 1:
Example 2:
Constraints:
•
•
1653. Minimum Deletions to Make String Balanced
Topic: String, Dynamic Programming, Stack
Difficulty: Medium
Problem:
You are given a string
s consisting only of characters 'a' and 'b'.You can delete any number of characters in
s to make s balanced. s is balanced if there is no pair of indices (i,j) such that i < j and s[i] = 'b' and s[j]= 'a'.Return the minimum number of deletions needed to make
s balanced.Example 1:
Input: s = "aababbab"
Output: 2
Explanation: You can either:
Delete the characters at 0-indexed positions 2 and 6 ("aababbab" -> "aaabbb"), or
Delete the characters at 0-indexed positions 3 and 6 ("aababbab" -> "aabbbb").
Example 2:
Input: s = "bbaaaaabb"
Output: 2
Explanation: The only solution is to delete the first two characters.
Constraints:
•
1 <= s.length <= 10^5•
s[i] is 'a' or 'b'.