2025-05-13
3335. Total Characters in String After Transformations I
Topic: Hash Table, Math, String, Dynamic Programming, Counting
Difficulty: Medium
Problem:
You are given a string
• If the character is
• Otherwise, replace it with the next character in the alphabet. For example,
Return the length of the resulting string after exactly
Since the answer may be very large, return it modulo
Example 1:
Input: s = "abcyy", t = 2
Output: 7
Explanation:
• First Transformation (t = 1):
•
•
•
•
•
• String after the first transformation:
• Second Transformation (t = 2):
•
•
•
•
•
• String after the second transformation:
• Final Length of the string: The string is
Example 2:
Input: s = "azbk", t = 1
Output: 5
Explanation:
• First Transformation (t = 1):
•
•
•
•
• String after the first transformation:
• Final Length of the string: The string is
Constraints:
•
•
•
3335. Total Characters in String After Transformations I
Topic: Hash Table, Math, String, Dynamic Programming, Counting
Difficulty: Medium
Problem:
You are given a string
s and an integer t, representing the number of transformations to perform. In one transformation, every character in s is replaced according to the following rules:• If the character is
'z', replace it with the string "ab".• Otherwise, replace it with the next character in the alphabet. For example,
'a' is replaced with 'b', 'b' is replaced with 'c', and so on.Return the length of the resulting string after exactly
t transformations.Since the answer may be very large, return it modulo
10^9 + 7.Example 1:
Input: s = "abcyy", t = 2
Output: 7
Explanation:
• First Transformation (t = 1):
•
'a' becomes 'b'•
'b' becomes 'c'•
'c' becomes 'd'•
'y' becomes 'z'•
'y' becomes 'z'• String after the first transformation:
"bcdzz"• Second Transformation (t = 2):
•
'b' becomes 'c'•
'c' becomes 'd'•
'd' becomes 'e'•
'z' becomes "ab"•
'z' becomes "ab"• String after the second transformation:
"cdeabab"• Final Length of the string: The string is
"cdeabab", which has 7 characters.Example 2:
Input: s = "azbk", t = 1
Output: 5
Explanation:
• First Transformation (t = 1):
•
'a' becomes 'b'•
'z' becomes "ab"•
'b' becomes 'c'•
'k' becomes 'l'• String after the first transformation:
"babcl"• Final Length of the string: The string is
"babcl", which has 5 characters.Constraints:
•
1 <= s.length <= 10^5•
s consists only of lowercase English letters.•
1 <= t <= 10^52025-05-14
3337. Total Characters in String After Transformations II
Topic: Hash Table, Math, String, Dynamic Programming, Counting
Difficulty: Hard
Problem:
You are given a string
• Replace
• The transformation wraps around the alphabet if it exceeds
Return the length of the resulting string after exactly
Since the answer may be very large, return it modulo
Example 1:
Input: s = "abcyy", t = 2, nums = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
Output: 7
Explanation:
• First Transformation (t = 1):
•
•
•
•
•
• String after the first transformation:
• Second Transformation (t = 2):
•
•
•
•
•
• String after the second transformation:
• Final Length of the string: The string is
Example 2:
Input: s = "azbk", t = 1, nums = 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
Output: 8
Explanation:
• First Transformation (t = 1):
•
•
•
•
• String after the first transformation:
• Final Length of the string: The string is
Constraints:
•
•
•
•
•
3337. Total Characters in String After Transformations II
Topic: Hash Table, Math, String, Dynamic Programming, Counting
Difficulty: Hard
Problem:
You are given a string
s consisting of lowercase English letters, an integer t representing the number of transformations to perform, and an array nums of size 26. In one transformation, every character in s is replaced according to the following rules:• Replace
s[i] with the next nums[s[i] - 'a'] consecutive characters in the alphabet. For example, if s[i] = 'a' and nums[0] = 3, the character 'a' transforms into the next 3 consecutive characters ahead of it, which results in "bcd".• The transformation wraps around the alphabet if it exceeds
'z'. For example, if s[i] = 'y' and nums[24] = 3, the character 'y' transforms into the next 3 consecutive characters ahead of it, which results in "zab".Return the length of the resulting string after exactly
t transformations.Since the answer may be very large, return it modulo
10^9 + 7.Example 1:
Input: s = "abcyy", t = 2, nums = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
Output: 7
Explanation:
• First Transformation (t = 1):
•
'a' becomes 'b' as nums[0] == 1•
'b' becomes 'c' as nums[1] == 1•
'c' becomes 'd' as nums[2] == 1•
'y' becomes 'z' as nums[24] == 1•
'y' becomes 'z' as nums[24] == 1• String after the first transformation:
"bcdzz"• Second Transformation (t = 2):
•
'b' becomes 'c' as nums[1] == 1•
'c' becomes 'd' as nums[2] == 1•
'd' becomes 'e' as nums[3] == 1•
'z' becomes 'ab' as nums[25] == 2•
'z' becomes 'ab' as nums[25] == 2• String after the second transformation:
"cdeabab"• Final Length of the string: The string is
"cdeabab", which has 7 characters.Example 2:
Input: s = "azbk", t = 1, nums = 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
Output: 8
Explanation:
• First Transformation (t = 1):
•
'a' becomes 'bc' as nums[0] == 2•
'z' becomes 'ab' as nums[25] == 2•
'b' becomes 'cd' as nums[1] == 2•
'k' becomes 'lm' as nums[10] == 2• String after the first transformation:
"bcabcdlm"• Final Length of the string: The string is
"bcabcdlm", which has 8 characters.Constraints:
•
1 <= s.length <= 10^5•
s consists only of lowercase English letters.•
1 <= t <= 10^9•
nums.length == 26•
1 <= nums[i] <= 252025-05-15
2900. Longest Unequal Adjacent Groups Subsequence I
Topic: Array, String, Dynamic Programming, Greedy
Difficulty: Easy
Problem:
You are given a string array
Your task is to select the longest alternating subsequence from
Formally, you need to find the longest subsequence of an array of indices
Return the selected subsequence. If there are multiple answers, return any of them.
Note: The elements in
Example 1:
Input: words = "e","a","b", groups = 0,0,1
Output: "e","b"
Explanation: A subsequence that can be selected is
Example 2:
Input: words = "a","b","c","d", groups = 1,0,1,1
Output: "a","b","c"
Explanation: A subsequence that can be selected is
Constraints:
•
•
•
•
•
2900. Longest Unequal Adjacent Groups Subsequence I
Topic: Array, String, Dynamic Programming, Greedy
Difficulty: Easy
Problem:
You are given a string array
words and a binary array groups both of length n, where words[i] is associated with groups[i].Your task is to select the longest alternating subsequence from
words. A subsequence of words is alternating if for any two consecutive strings in the sequence, their corresponding elements in the binary array groups differ. Essentially, you are to choose strings such that adjacent elements have non-matching corresponding bits in the groups array.Formally, you need to find the longest subsequence of an array of indices
[0, 1, ..., n - 1] denoted as [i_0, i_1, ..., i_k-1], such that groups[i_j] != groups[i_j+1] for each 0 <= j < k - 1 and then find the words corresponding to these indices.Return the selected subsequence. If there are multiple answers, return any of them.
Note: The elements in
words are distinct.Example 1:
Input: words = "e","a","b", groups = 0,0,1
Output: "e","b"
Explanation: A subsequence that can be selected is
["e","b"] because groups[0] != groups[2]. Another subsequence that can be selected is ["a","b"] because groups[1] != groups[2]. It can be demonstrated that the length of the longest subsequence of indices that satisfies the condition is 2.Example 2:
Input: words = "a","b","c","d", groups = 1,0,1,1
Output: "a","b","c"
Explanation: A subsequence that can be selected is
["a","b","c"] because groups[0] != groups[1] and groups[1] != groups[2]. Another subsequence that can be selected is ["a","b","d"] because groups[0] != groups[1] and groups[1] != groups[3]. It can be shown that the length of the longest subsequence of indices that satisfies the condition is 3.Constraints:
•
1 <= n == words.length == groups.length <= 100•
1 <= words[i].length <= 10•
groups[i] is either 0 or 1.•
words consists of distinct strings.•
words[i] consists of lowercase English letters.2025-05-16
2901. Longest Unequal Adjacent Groups Subsequence II
Topic: Array, String, Dynamic Programming
Difficulty: Medium
Problem:
You are given a string array
The hamming distance between two strings of equal length is the number of positions at which the corresponding characters are different.
You need to select the longest subsequence from an array of indices
• For adjacent indices in the subsequence, their corresponding groups are unequal, i.e.,
•
Return a string array containing the words corresponding to the indices (in order) in the selected subsequence. If there are multiple answers, return any of them.
Note: strings in
Example 1:
Input: words = "bab","dab","cab", groups = 1,2,2
Output: "bab","cab"
Explanation: A subsequence that can be selected is
•
•
So, a valid answer is
Another subsequence that can be selected is
•
•
So, another valid answer is
It can be shown that the length of the longest subsequence of indices that satisfies the conditions is
Example 2:
Input: words = "a","b","c","d", groups = 1,2,3,4
Output: "a","b","c","d"
Explanation: We can select the subsequence
It satisfies both conditions.
Hence, the answer is
It has the longest length among all subsequences of indices that satisfy the conditions.
Hence, it is the only answer.
Constraints:
•
•
•
•
•
2901. Longest Unequal Adjacent Groups Subsequence II
Topic: Array, String, Dynamic Programming
Difficulty: Medium
Problem:
You are given a string array
words, and an array groups, both arrays having length n.The hamming distance between two strings of equal length is the number of positions at which the corresponding characters are different.
You need to select the longest subsequence from an array of indices
[0, 1, ..., n - 1], such that for the subsequence denoted as [i_0, i_1, ..., i_k-1] having length k, the following holds:• For adjacent indices in the subsequence, their corresponding groups are unequal, i.e.,
groups[i_j] != groups[i_j+1], for each j where 0 < j + 1 < k.•
words[i_j] and words[i_j+1] are equal in length, and the hamming distance between them is 1, where 0 < j + 1 < k, for all indices in the subsequence.Return a string array containing the words corresponding to the indices (in order) in the selected subsequence. If there are multiple answers, return any of them.
Note: strings in
words may be unequal in length.Example 1:
Input: words = "bab","dab","cab", groups = 1,2,2
Output: "bab","cab"
Explanation: A subsequence that can be selected is
[0,2].•
groups[0] != groups[2]•
words[0].length == words[2].length, and the hamming distance between them is 1.So, a valid answer is
[words[0],words[2]] = ["bab","cab"].Another subsequence that can be selected is
[0,1].•
groups[0] != groups[1]•
words[0].length == words[1].length, and the hamming distance between them is 1.So, another valid answer is
[words[0],words[1]] = ["bab","dab"].It can be shown that the length of the longest subsequence of indices that satisfies the conditions is
2.Example 2:
Input: words = "a","b","c","d", groups = 1,2,3,4
Output: "a","b","c","d"
Explanation: We can select the subsequence
[0,1,2,3].It satisfies both conditions.
Hence, the answer is
[words[0],words[1],words[2],words[3]] = ["a","b","c","d"].It has the longest length among all subsequences of indices that satisfy the conditions.
Hence, it is the only answer.
Constraints:
•
1 <= n == words.length == groups.length <= 1000•
1 <= words[i].length <= 10•
1 <= groups[i] <= n•
words consists of distinct strings.•
words[i] consists of lowercase English letters.2025-05-17
75. Sort Colors
Topic: Array, Two Pointers, Sorting
Difficulty: Medium
Problem:
Given an array
We will use the integers
You must solve this problem without using the library's sort function.
Example 1:
Example 2:
Constraints:
•
•
•
Follow up: Could you come up with a one-pass algorithm using only constant extra space?
75. Sort Colors
Topic: Array, Two Pointers, Sorting
Difficulty: Medium
Problem:
Given an array
nums with n objects colored red, white, or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white, and blue.We will use the integers
0, 1, and 2 to represent the color red, white, and blue, respectively.You must solve this problem without using the library's sort function.
Example 1:
Input: nums = [2,0,2,1,1,0]
Output: [0,0,1,1,2,2]
Example 2:
Input: nums = [2,0,1]
Output: [0,1,2]
Constraints:
•
n == nums.length•
1 <= n <= 300•
nums[i] is either 0, 1, or 2.Follow up: Could you come up with a one-pass algorithm using only constant extra space?
2025-05-18
1931. Painting a Grid With Three Different Colors
Topic: Dynamic Programming
Difficulty: Hard
Problem:
You are given two integers
Return the number of ways to color the grid with no two adjacent cells having the same color. Since the answer can be very large, return it modulo
Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/22/colorthegrid.png
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/22/copy-of-colorthegrid.png
Example 3:
Constraints:
•
•
1931. Painting a Grid With Three Different Colors
Topic: Dynamic Programming
Difficulty: Hard
Problem:
You are given two integers
m and n. Consider an m x n grid where each cell is initially white. You can paint each cell red, green, or blue. All cells must be painted.Return the number of ways to color the grid with no two adjacent cells having the same color. Since the answer can be very large, return it modulo
10^9 + 7.Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/22/colorthegrid.png
Input: m = 1, n = 1
Output: 3
Explanation: The three possible colorings are shown in the image above.
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/22/copy-of-colorthegrid.png
Input: m = 1, n = 2
Output: 6
Explanation: The six possible colorings are shown in the image above.
Example 3:
Input: m = 5, n = 5
Output: 580986
Constraints:
•
1 <= m <= 5•
1 <= n <= 10002025-05-19
3024. Type of Triangle
Topic: Array, Math, Sorting
Difficulty: Easy
Problem:
You are given a 0-indexed integer array
• A triangle is called equilateral if it has all sides of equal length.
• A triangle is called isosceles if it has exactly two sides of equal length.
• A triangle is called scalene if all its sides are of different lengths.
Return a string representing the type of triangle that can be formed or
Example 1:
Example 2:
Constraints:
•
•
3024. Type of Triangle
Topic: Array, Math, Sorting
Difficulty: Easy
Problem:
You are given a 0-indexed integer array
nums of size 3 which can form the sides of a triangle.• A triangle is called equilateral if it has all sides of equal length.
• A triangle is called isosceles if it has exactly two sides of equal length.
• A triangle is called scalene if all its sides are of different lengths.
Return a string representing the type of triangle that can be formed or
"none" if it cannot form a triangle.Example 1:
Input: nums = [3,3,3]
Output: "equilateral"
Explanation: Since all the sides are of equal length, therefore, it will form an equilateral triangle.
Example 2:
Input: nums = [3,4,5]
Output: "scalene"
Explanation:
nums[0] + nums[1] = 3 + 4 = 7, which is greater than nums[2] = 5.
nums[0] + nums[2] = 3 + 5 = 8, which is greater than nums[1] = 4.
nums[1] + nums[2] = 4 + 5 = 9, which is greater than nums[0] = 3.
Since the sum of the two sides is greater than the third side for all three cases, therefore, it can form a triangle.
As all the sides are of different lengths, it will form a scalene triangle.
Constraints:
•
nums.length == 3•
1 <= nums[i] <= 1002025-05-20
3355. Zero Array Transformation I
Topic: Array, Prefix Sum
Difficulty: Medium
Problem:
You are given an integer array
For each
• Select a subset of indices within the range
• Decrement the values at the selected indices by 1.
A Zero Array is an array where all elements are equal to 0.
Return
Example 1:
Input: nums = 1,0,1, queries = [0,2]
Output: true
Explanation:
• For i = 0:
• Select the subset of indices as
• The array will become
Example 2:
Input: nums = 4,3,2,1, queries = [1,3,0,2]
Output: false
Explanation:
• For i = 0:
• Select the subset of indices as
• The array will become
• For i = 1:
• Select the subset of indices as
• The array will become
Constraints:
•
•
•
•
•
3355. Zero Array Transformation I
Topic: Array, Prefix Sum
Difficulty: Medium
Problem:
You are given an integer array
nums of length n and a 2D array queries, where queries[i] = [l_i, r_i].For each
queries[i]:• Select a subset of indices within the range
[l_i, r_i] in nums.• Decrement the values at the selected indices by 1.
A Zero Array is an array where all elements are equal to 0.
Return
true if it is possible to transform nums into a Zero Array after processing all the queries sequentially, otherwise return false.Example 1:
Input: nums = 1,0,1, queries = [0,2]
Output: true
Explanation:
• For i = 0:
• Select the subset of indices as
[0, 2] and decrement the values at these indices by 1.• The array will become
[0, 0, 0], which is a Zero Array.Example 2:
Input: nums = 4,3,2,1, queries = [1,3,0,2]
Output: false
Explanation:
• For i = 0:
• Select the subset of indices as
[1, 2, 3] and decrement the values at these indices by 1.• The array will become
[4, 2, 1, 0].• For i = 1:
• Select the subset of indices as
[0, 1, 2] and decrement the values at these indices by 1.• The array will become
[3, 1, 0, 0], which is not a Zero Array.Constraints:
•
1 <= nums.length <= 10^5•
0 <= nums[i] <= 10^5•
1 <= queries.length <= 10^5•
queries[i].length == 2•
0 <= l_i <= r_i < nums.length2025-05-21
73. Set Matrix Zeroes
Topic: Array, Hash Table, Matrix
Difficulty: Medium
Problem:
Given an
You must do it in place.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/17/mat1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/08/17/mat2.jpg
Constraints:
•
•
•
•
Follow up:
• A straightforward solution using
• A simple improvement uses
• Could you devise a constant space solution?
73. Set Matrix Zeroes
Topic: Array, Hash Table, Matrix
Difficulty: Medium
Problem:
Given an
m x n integer matrix matrix, if an element is 0, set its entire row and column to 0's.You must do it in place.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/17/mat1.jpg
Input: matrix = [[1,1,1],[1,0,1],[1,1,1]]
Output: [[1,0,1],[0,0,0],[1,0,1]]
Example 2:
Image: https://assets.leetcode.com/uploads/2020/08/17/mat2.jpg
Input: matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
Output: [[0,0,0,0],[0,4,5,0],[0,3,1,0]]
Constraints:
•
m == matrix.length•
n == matrix[0].length•
1 <= m, n <= 200•
-2^31 <= matrix[i][j] <= 2^31 - 1Follow up:
• A straightforward solution using
O(mn) space is probably a bad idea.• A simple improvement uses
O(m + n) space, but still not the best solution.• Could you devise a constant space solution?
2025-05-22
3362. Zero Array Transformation III
Topic: Array, Greedy, Sorting, Heap (Priority Queue), Prefix Sum
Difficulty: Medium
Problem:
You are given an integer array
Each
• Decrement the value at each index in the range
• The amount by which the value is decremented can be chosen independently for each index.
A Zero Array is an array with all its elements equal to 0.
Return the maximum number of elements that can be removed from
Example 1:
Input: nums = 2,0,2, queries = [0,2,0,2,1,1]
Output: 1
Explanation:
After removing
• Using
• Using
Example 2:
Input: nums = 1,1,1,1, queries = [1,3,0,2,1,3,1,2]
Output: 2
Explanation:
We can remove
Example 3:
Input: nums = 1,2,3,4, queries = [0,3]
Output: -1
Explanation:
Constraints:
•
•
•
•
•
3362. Zero Array Transformation III
Topic: Array, Greedy, Sorting, Heap (Priority Queue), Prefix Sum
Difficulty: Medium
Problem:
You are given an integer array
nums of length n and a 2D array queries where queries[i] = [l_i, r_i].Each
queries[i] represents the following action on nums:• Decrement the value at each index in the range
[l_i, r_i] in nums by at most 1.• The amount by which the value is decremented can be chosen independently for each index.
A Zero Array is an array with all its elements equal to 0.
Return the maximum number of elements that can be removed from
queries, such that nums can still be converted to a zero array using the remaining queries. If it is not possible to convert nums to a zero array, return -1.Example 1:
Input: nums = 2,0,2, queries = [0,2,0,2,1,1]
Output: 1
Explanation:
After removing
queries[2], nums can still be converted to a zero array.• Using
queries[0], decrement nums[0] and nums[2] by 1 and nums[1] by 0.• Using
queries[1], decrement nums[0] and nums[2] by 1 and nums[1] by 0.Example 2:
Input: nums = 1,1,1,1, queries = [1,3,0,2,1,3,1,2]
Output: 2
Explanation:
We can remove
queries[2] and queries[3].Example 3:
Input: nums = 1,2,3,4, queries = [0,3]
Output: -1
Explanation:
nums cannot be converted to a zero array even after using all the queries.Constraints:
•
1 <= nums.length <= 10^5•
0 <= nums[i] <= 10^5•
1 <= queries.length <= 10^5•
queries[i].length == 2•
0 <= l_i <= r_i < nums.length2025-05-23
3068. Find the Maximum Sum of Node Values
Topic: Array, Dynamic Programming, Greedy, Bit Manipulation, Tree, Sorting
Difficulty: Hard
Problem:
There exists an undirected tree with
Alice wants the sum of values of tree nodes to be maximum, for which Alice can perform the following operation any number of times (including zero) on the tree:
• Choose any edge
•
•
Return the maximum possible sum of the values Alice can achieve by performing the operation any number of times.
Example 1:
Image: https://assets.leetcode.com/uploads/2023/11/09/screenshot-2023-11-10-012513.png
Example 2:
Image: https://assets.leetcode.com/uploads/2024/01/09/screenshot-2024-01-09-220017.png
Example 3:
Image: https://assets.leetcode.com/uploads/2023/11/09/screenshot-2023-11-10-012641.png
Constraints:
•
•
•
•
•
•
• The input is generated such that
3068. Find the Maximum Sum of Node Values
Topic: Array, Dynamic Programming, Greedy, Bit Manipulation, Tree, Sorting
Difficulty: Hard
Problem:
There exists an undirected tree with
n nodes numbered 0 to n - 1. You are given a 0-indexed 2D integer array edges of length n - 1, where edges[i] = [u_i, v_i] indicates that there is an edge between nodes u_i and v_i in the tree. You are also given a positive integer k, and a 0-indexed array of non-negative integers nums of length n, where nums[i] represents the value of the node numbered i.Alice wants the sum of values of tree nodes to be maximum, for which Alice can perform the following operation any number of times (including zero) on the tree:
• Choose any edge
[u, v] connecting the nodes u and v, and update their values as follows:•
nums[u] = nums[u] XOR k•
nums[v] = nums[v] XOR kReturn the maximum possible sum of the values Alice can achieve by performing the operation any number of times.
Example 1:
Image: https://assets.leetcode.com/uploads/2023/11/09/screenshot-2023-11-10-012513.png
Input: nums = [1,2,1], k = 3, edges = [[0,1],[0,2]]
Output: 6
Explanation: Alice can achieve the maximum sum of 6 using a single operation:
- Choose the edge [0,2]. nums[0] and nums[2] become: 1 XOR 3 = 2, and the array nums becomes: [1,2,1] -> [2,2,2].
The total sum of values is 2 + 2 + 2 = 6.
It can be shown that 6 is the maximum achievable sum of values.
Example 2:
Image: https://assets.leetcode.com/uploads/2024/01/09/screenshot-2024-01-09-220017.png
Input: nums = [2,3], k = 7, edges = [[0,1]]
Output: 9
Explanation: Alice can achieve the maximum sum of 9 using a single operation:
- Choose the edge [0,1]. nums[0] becomes: 2 XOR 7 = 5 and nums[1] become: 3 XOR 7 = 4, and the array nums becomes: [2,3] -> [5,4].
The total sum of values is 5 + 4 = 9.
It can be shown that 9 is the maximum achievable sum of values.
Example 3:
Image: https://assets.leetcode.com/uploads/2023/11/09/screenshot-2023-11-10-012641.png
Input: nums = [7,7,7,7,7,7], k = 3, edges = [[0,1],[0,2],[0,3],[0,4],[0,5]]
Output: 42
Explanation: The maximum achievable sum is 42 which can be achieved by Alice performing no operations.
Constraints:
•
2 <= n == nums.length <= 2 * 10^4•
1 <= k <= 10^9•
0 <= nums[i] <= 10^9•
edges.length == n - 1•
edges[i].length == 2•
0 <= edges[i][0], edges[i][1] <= n - 1• The input is generated such that
edges represent a valid tree.2025-05-24
2942. Find Words Containing Character
Topic: Array, String
Difficulty: Easy
Problem:
You are given a 0-indexed array of strings
Return an array of indices representing the words that contain the character
Note that the returned array may be in any order.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
2942. Find Words Containing Character
Topic: Array, String
Difficulty: Easy
Problem:
You are given a 0-indexed array of strings
words and a character x.Return an array of indices representing the words that contain the character
x.Note that the returned array may be in any order.
Example 1:
Input: words = ["leet","code"], x = "e"
Output: [0,1]
Explanation: "e" occurs in both words: "leet", and "code". Hence, we return indices 0 and 1.
Example 2:
Input: words = ["abc","bcd","aaaa","cbc"], x = "a"
Output: [0,2]
Explanation: "a" occurs in "abc", and "aaaa". Hence, we return indices 0 and 2.
Example 3:
Input: words = ["abc","bcd","aaaa","cbc"], x = "z"
Output: []
Explanation: "z" does not occur in any of the words. Hence, we return an empty array.
Constraints:
•
1 <= words.length <= 50•
1 <= words[i].length <= 50•
x is a lowercase English letter.•
words[i] consists only of lowercase English letters.2025-05-25
2131. Longest Palindrome by Concatenating Two Letter Words
Topic: Array, Hash Table, String, Greedy, Counting
Difficulty: Medium
Problem:
You are given an array of strings
Create the longest possible palindrome by selecting some elements from
Return the length of the longest palindrome that you can create. If it is impossible to create any palindrome, return
A palindrome is a string that reads the same forward and backward.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
2131. Longest Palindrome by Concatenating Two Letter Words
Topic: Array, Hash Table, String, Greedy, Counting
Difficulty: Medium
Problem:
You are given an array of strings
words. Each element of words consists of two lowercase English letters.Create the longest possible palindrome by selecting some elements from
words and concatenating them in any order. Each element can be selected at most once.Return the length of the longest palindrome that you can create. If it is impossible to create any palindrome, return
0.A palindrome is a string that reads the same forward and backward.
Example 1:
Input: words = ["lc","cl","gg"]
Output: 6
Explanation: One longest palindrome is "lc" + "gg" + "cl" = "lcggcl", of length 6.
Note that "clgglc" is another longest palindrome that can be created.
Example 2:
Input: words = ["ab","ty","yt","lc","cl","ab"]
Output: 8
Explanation: One longest palindrome is "ty" + "lc" + "cl" + "yt" = "tylcclyt", of length 8.
Note that "lcyttycl" is another longest palindrome that can be created.
Example 3:
Input: words = ["cc","ll","xx"]
Output: 2
Explanation: One longest palindrome is "cc", of length 2.
Note that "ll" is another longest palindrome that can be created, and so is "xx".
Constraints:
•
1 <= words.length <= 10^5•
words[i].length == 2•
words[i] consists of lowercase English letters.2025-05-26
1857. Largest Color Value in a Directed Graph
Topic: Hash Table, Dynamic Programming, Graph, Topological Sort, Memoization, Counting
Difficulty: Hard
Problem:
There is a directed graph of
You are given a string
A valid path in the graph is a sequence of nodes
Return the largest color value of any valid path in the given graph, or
Example 1:
Image: https://assets.leetcode.com/uploads/2021/04/21/leet1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2021/04/21/leet2.png
Constraints:
•
•
•
•
•
•
1857. Largest Color Value in a Directed Graph
Topic: Hash Table, Dynamic Programming, Graph, Topological Sort, Memoization, Counting
Difficulty: Hard
Problem:
There is a directed graph of
n colored nodes and m edges. The nodes are numbered from 0 to n - 1.You are given a string
colors where colors[i] is a lowercase English letter representing the color of the i^th node in this graph (0-indexed). You are also given a 2D array edges where edges[j] = [a_j, b_j] indicates that there is a directed edge from node a_j to node b_j.A valid path in the graph is a sequence of nodes
x_1 -> x_2 -> x_3 -> ... -> x_k such that there is a directed edge from x_i to x_i+1 for every 1 <= i < k. The color value of the path is the number of nodes that are colored the most frequently occurring color along that path.Return the largest color value of any valid path in the given graph, or
-1 if the graph contains a cycle.Example 1:
Image: https://assets.leetcode.com/uploads/2021/04/21/leet1.png
Input: colors = "abaca", edges = [[0,1],[0,2],[2,3],[3,4]]
Output: 3
Explanation: The path 0 -> 2 -> 3 -> 4 contains 3 nodes that are colored "a" (red in the above image).
Example 2:
Image: https://assets.leetcode.com/uploads/2021/04/21/leet2.png
Input: colors = "a", edges = [[0,0]]
Output: -1
Explanation: There is a cycle from 0 to 0.
Constraints:
•
n == colors.length•
m == edges.length•
1 <= n <= 10^5•
0 <= m <= 10^5•
colors consists of lowercase English letters.•
0 <= a_j, b_j < n2025-05-27
2894. Divisible and Non-divisible Sums Difference
Topic: Math
Difficulty: Easy
Problem:
You are given positive integers
Define two integers as follows:
•
•
Return the integer
Example 1:
Example 2:
Example 3:
Constraints:
•
2894. Divisible and Non-divisible Sums Difference
Topic: Math
Difficulty: Easy
Problem:
You are given positive integers
n and m.Define two integers as follows:
•
num1: The sum of all integers in the range [1, n] (both inclusive) that are not divisible by m.•
num2: The sum of all integers in the range [1, n] (both inclusive) that are divisible by m.Return the integer
num1 - num2.Example 1:
Input: n = 10, m = 3
Output: 19
Explanation: In the given example:
- Integers in the range [1, 10] that are not divisible by 3 are [1,2,4,5,7,8,10], num1 is the sum of those integers = 37.
- Integers in the range [1, 10] that are divisible by 3 are [3,6,9], num2 is the sum of those integers = 18.
We return 37 - 18 = 19 as the answer.
Example 2:
Input: n = 5, m = 6
Output: 15
Explanation: In the given example:
- Integers in the range [1, 5] that are not divisible by 6 are [1,2,3,4,5], num1 is the sum of those integers = 15.
- Integers in the range [1, 5] that are divisible by 6 are [], num2 is the sum of those integers = 0.
We return 15 - 0 = 15 as the answer.
Example 3:
Input: n = 5, m = 1
Output: -15
Explanation: In the given example:
- Integers in the range [1, 5] that are not divisible by 1 are [], num1 is the sum of those integers = 0.
- Integers in the range [1, 5] that are divisible by 1 are [1,2,3,4,5], num2 is the sum of those integers = 15.
We return 0 - 15 = -15 as the answer.
Constraints:
•
1 <= n, m <= 10002025-05-28
3372. Maximize the Number of Target Nodes After Connecting Trees I
Topic: Tree, Depth-First Search, Breadth-First Search
Difficulty: Medium
Problem:
There exist two undirected trees with
You are given two 2D integer arrays
Node
Return an array of
Note that queries are independent from each other. That is, for every query you will remove the added edge before proceeding to the next query.
Example 1:
Input: edges1 = [0,1,0,2,2,3,2,4], edges2 = [0,1,0,2,0,3,2,7,1,4,4,5,4,6], k = 2
Output: 9,7,9,8,8
Explanation:
• For
• For
• For
• For
• For
Image: https://assets.leetcode.com/uploads/2024/09/24/3982-1.png
Example 2:
Input: edges1 = [0,1,0,2,0,3,0,4], edges2 = [0,1,1,2,2,3], k = 1
Output: 6,3,3,3,3
Explanation:
For every
Image: https://assets.leetcode.com/uploads/2024/09/24/3928-2.png
Constraints:
•
•
•
•
•
•
•
•
• The input is generated such that
•
3372. Maximize the Number of Target Nodes After Connecting Trees I
Topic: Tree, Depth-First Search, Breadth-First Search
Difficulty: Medium
Problem:
There exist two undirected trees with
n and m nodes, with distinct labels in ranges [0, n - 1] and [0, m - 1], respectively.You are given two 2D integer arrays
edges1 and edges2 of lengths n - 1 and m - 1, respectively, where edges1[i] = [a_i, b_i] indicates that there is an edge between nodes a_i and b_i in the first tree and edges2[i] = [u_i, v_i] indicates that there is an edge between nodes u_i and v_i in the second tree. You are also given an integer k.Node
u is target to node v if the number of edges on the path from u to v is less than or equal to k. Note that a node is always target to itself.Return an array of
n integers answer, where answer[i] is the maximum possible number of nodes target to node i of the first tree if you have to connect one node from the first tree to another node in the second tree.Note that queries are independent from each other. That is, for every query you will remove the added edge before proceeding to the next query.
Example 1:
Input: edges1 = [0,1,0,2,2,3,2,4], edges2 = [0,1,0,2,0,3,2,7,1,4,4,5,4,6], k = 2
Output: 9,7,9,8,8
Explanation:
• For
i = 0, connect node 0 from the first tree to node 0 from the second tree.• For
i = 1, connect node 1 from the first tree to node 0 from the second tree.• For
i = 2, connect node 2 from the first tree to node 4 from the second tree.• For
i = 3, connect node 3 from the first tree to node 4 from the second tree.• For
i = 4, connect node 4 from the first tree to node 4 from the second tree.Image: https://assets.leetcode.com/uploads/2024/09/24/3982-1.png
Example 2:
Input: edges1 = [0,1,0,2,0,3,0,4], edges2 = [0,1,1,2,2,3], k = 1
Output: 6,3,3,3,3
Explanation:
For every
i, connect node i of the first tree with any node of the second tree.Image: https://assets.leetcode.com/uploads/2024/09/24/3928-2.png
Constraints:
•
2 <= n, m <= 1000•
edges1.length == n - 1•
edges2.length == m - 1•
edges1[i].length == edges2[i].length == 2•
edges1[i] = [a_i, b_i]•
0 <= a_i, b_i < n•
edges2[i] = [u_i, v_i]•
0 <= u_i, v_i < m• The input is generated such that
edges1 and edges2 represent valid trees.•
0 <= k <= 10002025-05-29
3373. Maximize the Number of Target Nodes After Connecting Trees II
Topic: Tree, Depth-First Search, Breadth-First Search
Difficulty: Hard
Problem:
There exist two undirected trees with
You are given two 2D integer arrays
Node
Return an array of
Note that queries are independent from each other. That is, for every query you will remove the added edge before proceeding to the next query.
Example 1:
Input: edges1 = [0,1,0,2,2,3,2,4], edges2 = [0,1,0,2,0,3,2,7,1,4,4,5,4,6]
Output: 8,7,7,8,8
Explanation:
• For
• For
• For
• For
• For
Image: https://assets.leetcode.com/uploads/2024/09/24/3982-1.png
Example 2:
Input: edges1 = [0,1,0,2,0,3,0,4], edges2 = [0,1,1,2,2,3]
Output: 3,6,6,6,6
Explanation:
For every
Image: https://assets.leetcode.com/uploads/2024/09/24/3928-2.png
Constraints:
•
•
•
•
•
•
•
•
• The input is generated such that
3373. Maximize the Number of Target Nodes After Connecting Trees II
Topic: Tree, Depth-First Search, Breadth-First Search
Difficulty: Hard
Problem:
There exist two undirected trees with
n and m nodes, labeled from [0, n - 1] and [0, m - 1], respectively.You are given two 2D integer arrays
edges1 and edges2 of lengths n - 1 and m - 1, respectively, where edges1[i] = [a_i, b_i] indicates that there is an edge between nodes a_i and b_i in the first tree and edges2[i] = [u_i, v_i] indicates that there is an edge between nodes u_i and v_i in the second tree.Node
u is target to node v if the number of edges on the path from u to v is even. Note that a node is always target to itself.Return an array of
n integers answer, where answer[i] is the maximum possible number of nodes that are target to node i of the first tree if you had to connect one node from the first tree to another node in the second tree.Note that queries are independent from each other. That is, for every query you will remove the added edge before proceeding to the next query.
Example 1:
Input: edges1 = [0,1,0,2,2,3,2,4], edges2 = [0,1,0,2,0,3,2,7,1,4,4,5,4,6]
Output: 8,7,7,8,8
Explanation:
• For
i = 0, connect node 0 from the first tree to node 0 from the second tree.• For
i = 1, connect node 1 from the first tree to node 4 from the second tree.• For
i = 2, connect node 2 from the first tree to node 7 from the second tree.• For
i = 3, connect node 3 from the first tree to node 0 from the second tree.• For
i = 4, connect node 4 from the first tree to node 4 from the second tree.Image: https://assets.leetcode.com/uploads/2024/09/24/3982-1.png
Example 2:
Input: edges1 = [0,1,0,2,0,3,0,4], edges2 = [0,1,1,2,2,3]
Output: 3,6,6,6,6
Explanation:
For every
i, connect node i of the first tree with any node of the second tree.Image: https://assets.leetcode.com/uploads/2024/09/24/3928-2.png
Constraints:
•
2 <= n, m <= 10^5•
edges1.length == n - 1•
edges2.length == m - 1•
edges1[i].length == edges2[i].length == 2•
edges1[i] = [a_i, b_i]•
0 <= a_i, b_i < n•
edges2[i] = [u_i, v_i]•
0 <= u_i, v_i < m• The input is generated such that
edges1 and edges2 represent valid trees.2025-05-30
2359. Find Closest Node to Given Two Nodes
Topic: Depth-First Search, Graph
Difficulty: Medium
Problem:
You are given a directed graph of
The graph is represented with a given 0-indexed array
You are also given two integers
Return the index of the node that can be reached from both
Note that
Example 1:
Image: https://assets.leetcode.com/uploads/2022/06/07/graph4drawio-2.png
Example 2:
Image: https://assets.leetcode.com/uploads/2022/06/07/graph4drawio-4.png
Constraints:
•
•
•
•
•
2359. Find Closest Node to Given Two Nodes
Topic: Depth-First Search, Graph
Difficulty: Medium
Problem:
You are given a directed graph of
n nodes numbered from 0 to n - 1, where each node has at most one outgoing edge.The graph is represented with a given 0-indexed array
edges of size n, indicating that there is a directed edge from node i to node edges[i]. If there is no outgoing edge from i, then edges[i] == -1.You are also given two integers
node1 and node2.Return the index of the node that can be reached from both
node1 and node2, such that the maximum between the distance from node1 to that node, and from node2 to that node is minimized. If there are multiple answers, return the node with the smallest index, and if no possible answer exists, return -1.Note that
edges may contain cycles.Example 1:
Image: https://assets.leetcode.com/uploads/2022/06/07/graph4drawio-2.png
Input: edges = [2,2,3,-1], node1 = 0, node2 = 1
Output: 2
Explanation: The distance from node 0 to node 2 is 1, and the distance from node 1 to node 2 is 1.
The maximum of those two distances is 1. It can be proven that we cannot get a node with a smaller maximum distance than 1, so we return node 2.
Example 2:
Image: https://assets.leetcode.com/uploads/2022/06/07/graph4drawio-4.png
Input: edges = [1,2,-1], node1 = 0, node2 = 2
Output: 2
Explanation: The distance from node 0 to node 2 is 2, and the distance from node 2 to itself is 0.
The maximum of those two distances is 2. It can be proven that we cannot get a node with a smaller maximum distance than 2, so we return node 2.
Constraints:
•
n == edges.length•
2 <= n <= 10^5•
-1 <= edges[i] < n•
edges[i] != i•
0 <= node1, node2 < n2025-05-31
909. Snakes and Ladders
Topic: Array, Breadth-First Search, Matrix
Difficulty: Medium
Problem:
You are given an
You start on square
• Choose a destination square
• This choice simulates the result of a standard 6-sided die roll: i.e., there are always at most 6 destinations, regardless of the size of the board.
• If
• The game ends when you reach the square
A board square on row
Note that you only take a snake or ladder at most once per dice roll. If the destination to a snake or ladder is the start of another snake or ladder, you do not follow the subsequent snake or ladder.
• For example, suppose the board is
Return the least number of dice rolls required to reach the square
Example 1:
Image: https://assets.leetcode.com/uploads/2018/09/23/snakes.png
Example 2:
Constraints:
•
•
•
• The squares labeled
909. Snakes and Ladders
Topic: Array, Breadth-First Search, Matrix
Difficulty: Medium
Problem:
You are given an
n x n integer matrix board where the cells are labeled from 1 to n^2 in a Boustrophedon style starting from the bottom left of the board (i.e. board[n - 1][0]) and alternating direction each row.You start on square
1 of the board. In each move, starting from square curr, do the following:• Choose a destination square
next with a label in the range [curr + 1, min(curr + 6, n^2)].• This choice simulates the result of a standard 6-sided die roll: i.e., there are always at most 6 destinations, regardless of the size of the board.
• If
next has a snake or ladder, you must move to the destination of that snake or ladder. Otherwise, you move to next.• The game ends when you reach the square
n^2.A board square on row
r and column c has a snake or ladder if board[r][c] != -1. The destination of that snake or ladder is board[r][c]. Squares 1 and n^2 are not the starting points of any snake or ladder.Note that you only take a snake or ladder at most once per dice roll. If the destination to a snake or ladder is the start of another snake or ladder, you do not follow the subsequent snake or ladder.
• For example, suppose the board is
[[-1,4],[-1,3]], and on the first move, your destination square is 2. You follow the ladder to square 3, but do not follow the subsequent ladder to 4.Return the least number of dice rolls required to reach the square
n^2. If it is not possible to reach the square, return -1.Example 1:
Image: https://assets.leetcode.com/uploads/2018/09/23/snakes.png
Input: board = [[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,-1,-1,-1,-1,-1],[-1,35,-1,-1,13,-1],[-1,-1,-1,-1,-1,-1],[-1,15,-1,-1,-1,-1]]
Output: 4
Explanation:
In the beginning, you start at square 1 (at row 5, column 0).
You decide to move to square 2 and must take the ladder to square 15.
You then decide to move to square 17 and must take the snake to square 13.
You then decide to move to square 14 and must take the ladder to square 35.
You then decide to move to square 36, ending the game.
This is the lowest possible number of moves to reach the last square, so return 4.
Example 2:
Input: board = [[-1,-1],[-1,3]]
Output: 1
Constraints:
•
n == board.length == board[i].length•
2 <= n <= 20•
board[i][j] is either -1 or in the range [1, n^2].• The squares labeled
1 and n^2 are not the starting points of any snake or ladder.2025-06-01
2929. Distribute Candies Among Children II
Topic: Math, Combinatorics, Enumeration
Difficulty: Medium
Problem:
You are given two positive integers
Return the total number of ways to distribute
Example 1:
Example 2:
Constraints:
•
•
2929. Distribute Candies Among Children II
Topic: Math, Combinatorics, Enumeration
Difficulty: Medium
Problem:
You are given two positive integers
n and limit.Return the total number of ways to distribute
n candies among 3 children such that no child gets more than limit candies.Example 1:
Input: n = 5, limit = 2
Output: 3
Explanation: There are 3 ways to distribute 5 candies such that no child gets more than 2 candies: (1, 2, 2), (2, 1, 2) and (2, 2, 1).
Example 2:
Input: n = 3, limit = 3
Output: 10
Explanation: There are 10 ways to distribute 3 candies such that no child gets more than 3 candies: (0, 0, 3), (0, 1, 2), (0, 2, 1), (0, 3, 0), (1, 0, 2), (1, 1, 1), (1, 2, 0), (2, 0, 1), (2, 1, 0) and (3, 0, 0).
Constraints:
•
1 <= n <= 10^6•
1 <= limit <= 10^62025-06-02
135. Candy
Topic: Array, Greedy
Difficulty: Hard
Problem:
There are
You are giving candies to these children subjected to the following requirements:
• Each child must have at least one candy.
• Children with a higher rating get more candies than their neighbors.
Return the minimum number of candies you need to have to distribute the candies to the children.
Example 1:
Example 2:
Constraints:
•
•
•
135. Candy
Topic: Array, Greedy
Difficulty: Hard
Problem:
There are
n children standing in a line. Each child is assigned a rating value given in the integer array ratings.You are giving candies to these children subjected to the following requirements:
• Each child must have at least one candy.
• Children with a higher rating get more candies than their neighbors.
Return the minimum number of candies you need to have to distribute the candies to the children.
Example 1:
Input: ratings = [1,0,2]
Output: 5
Explanation: You can allocate to the first, second and third child with 2, 1, 2 candies respectively.
Example 2:
Input: ratings = [1,2,2]
Output: 4
Explanation: You can allocate to the first, second and third child with 1, 2, 1 candies respectively.
The third child gets 1 candy because it satisfies the above two conditions.
Constraints:
•
n == ratings.length•
1 <= n <= 2 * 10^4•
0 <= ratings[i] <= 2 * 10^4