2024-12-15
1792. Maximum Average Pass Ratio
Topic: Array, Greedy, Heap (Priority Queue)
Difficulty: Medium
Problem:
There is a school that has classes of students and each class will be having a final exam. You are given a 2D integer array
You are also given an integer
The pass ratio of a class is equal to the number of students of the class that will pass the exam divided by the total number of students of the class. The average pass ratio is the sum of pass ratios of all the classes divided by the number of the classes.
Return the maximum possible average pass ratio after assigning the
Example 1:
Example 2:
Constraints:
•
•
•
•
1792. Maximum Average Pass Ratio
Topic: Array, Greedy, Heap (Priority Queue)
Difficulty: Medium
Problem:
There is a school that has classes of students and each class will be having a final exam. You are given a 2D integer array
classes, where classes[i] = [pass_i, total_i]. You know beforehand that in the i^th class, there are total_i total students, but only pass_i number of students will pass the exam.You are also given an integer
extraStudents. There are another extraStudents brilliant students that are guaranteed to pass the exam of any class they are assigned to. You want to assign each of the extraStudents students to a class in a way that maximizes the average pass ratio across all the classes.The pass ratio of a class is equal to the number of students of the class that will pass the exam divided by the total number of students of the class. The average pass ratio is the sum of pass ratios of all the classes divided by the number of the classes.
Return the maximum possible average pass ratio after assigning the
extraStudents students. Answers within 10^-5 of the actual answer will be accepted.Example 1:
Input: classes = [[1,2],[3,5],[2,2]], extraStudents = 2
Output: 0.78333
Explanation: You can assign the two extra students to the first class. The average pass ratio will be equal to (3/4 + 3/5 + 2/2) / 3 = 0.78333.
Example 2:
Input: classes = [[2,4],[3,9],[4,5],[2,10]], extraStudents = 4
Output: 0.53485
Constraints:
•
1 <= classes.length <= 10^5•
classes[i].length == 2•
1 <= pass_i <= total_i <= 10^5•
1 <= extraStudents <= 10^52024-12-16
3264. Final Array State After K Multiplication Operations I
Topic: Array, Math, Heap (Priority Queue), Simulation
Difficulty: Easy
Problem:
You are given an integer array
You need to perform
• Find the minimum value
• Replace the selected minimum value
Return an integer array denoting the final state of
Example 1:
Input: nums = 2,1,3,5,6, k = 5, multiplier = 2
Output: 8,4,6,5,6
Explanation:
OperationResultAfter operation 12, 2, 3, 5, 6After operation 24, 2, 3, 5, 6After operation 34, 4, 3, 5, 6After operation 44, 4, 6, 5, 6After operation 58, 4, 6, 5, 6
Example 2:
Input: nums = 1,2, k = 3, multiplier = 4
Output: 16,8
Explanation:
OperationResultAfter operation 14, 2After operation 24, 8After operation 316, 8
Constraints:
•
•
•
•
3264. Final Array State After K Multiplication Operations I
Topic: Array, Math, Heap (Priority Queue), Simulation
Difficulty: Easy
Problem:
You are given an integer array
nums, an integer k, and an integer multiplier.You need to perform
k operations on nums. In each operation:• Find the minimum value
x in nums. If there are multiple occurrences of the minimum value, select the one that appears first.• Replace the selected minimum value
x with x * multiplier.Return an integer array denoting the final state of
nums after performing all k operations.Example 1:
Input: nums = 2,1,3,5,6, k = 5, multiplier = 2
Output: 8,4,6,5,6
Explanation:
OperationResultAfter operation 12, 2, 3, 5, 6After operation 24, 2, 3, 5, 6After operation 34, 4, 3, 5, 6After operation 44, 4, 6, 5, 6After operation 58, 4, 6, 5, 6
Example 2:
Input: nums = 1,2, k = 3, multiplier = 4
Output: 16,8
Explanation:
OperationResultAfter operation 14, 2After operation 24, 8After operation 316, 8
Constraints:
•
1 <= nums.length <= 100•
1 <= nums[i] <= 100•
1 <= k <= 10•
1 <= multiplier <= 52024-12-17
2182. Construct String With Repeat Limit
Topic: Hash Table, String, Greedy, Heap (Priority Queue), Counting
Difficulty: Medium
Problem:
You are given a string
Return the lexicographically largest
A string
Example 1:
Example 2:
Constraints:
•
•
2182. Construct String With Repeat Limit
Topic: Hash Table, String, Greedy, Heap (Priority Queue), Counting
Difficulty: Medium
Problem:
You are given a string
s and an integer repeatLimit. Construct a new string repeatLimitedString using the characters of s such that no letter appears more than repeatLimit times in a row. You do not have to use all characters from s.Return the lexicographically largest
repeatLimitedString possible.A string
a is lexicographically larger than a string b if in the first position where a and b differ, string a has a letter that appears later in the alphabet than the corresponding letter in b. If the first min(a.length, b.length) characters do not differ, then the longer string is the lexicographically larger one.Example 1:
Input: s = "cczazcc", repeatLimit = 3
Output: "zzcccac"
Explanation: We use all of the characters from s to construct the repeatLimitedString "zzcccac".
The letter 'a' appears at most 1 time in a row.
The letter 'c' appears at most 3 times in a row.
The letter 'z' appears at most 2 times in a row.
Hence, no letter appears more than repeatLimit times in a row and the string is a valid repeatLimitedString.
The string is the lexicographically largest repeatLimitedString possible so we return "zzcccac".
Note that the string "zzcccca" is lexicographically larger but the letter 'c' appears more than 3 times in a row, so it is not a valid repeatLimitedString.
Example 2:
Input: s = "aababab", repeatLimit = 2
Output: "bbabaa"
Explanation: We use only some of the characters from s to construct the repeatLimitedString "bbabaa".
The letter 'a' appears at most 2 times in a row.
The letter 'b' appears at most 2 times in a row.
Hence, no letter appears more than repeatLimit times in a row and the string is a valid repeatLimitedString.
The string is the lexicographically largest repeatLimitedString possible so we return "bbabaa".
Note that the string "bbabaaa" is lexicographically larger but the letter 'a' appears more than 2 times in a row, so it is not a valid repeatLimitedString.
Constraints:
•
1 <= repeatLimit <= s.length <= 10^5•
s consists of lowercase English letters.2024-12-18
1475. Final Prices With a Special Discount in a Shop
Topic: Array, Stack, Monotonic Stack
Difficulty: Easy
Problem:
You are given an integer array
There is a special discount for items in the shop. If you buy the
Return an integer array
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1475. Final Prices With a Special Discount in a Shop
Topic: Array, Stack, Monotonic Stack
Difficulty: Easy
Problem:
You are given an integer array
prices where prices[i] is the price of the i^th item in a shop.There is a special discount for items in the shop. If you buy the
i^th item, then you will receive a discount equivalent to prices[j] where j is the minimum index such that j > i and prices[j] <= prices[i]. Otherwise, you will not receive any discount at all.Return an integer array
answer where answer[i] is the final price you will pay for the i^th item of the shop, considering the special discount.Example 1:
Input: prices = [8,4,6,2,3]
Output: [4,2,4,2,3]
Explanation:
For item 0 with price[0]=8 you will receive a discount equivalent to prices[1]=4, therefore, the final price you will pay is 8 - 4 = 4.
For item 1 with price[1]=4 you will receive a discount equivalent to prices[3]=2, therefore, the final price you will pay is 4 - 2 = 2.
For item 2 with price[2]=6 you will receive a discount equivalent to prices[3]=2, therefore, the final price you will pay is 6 - 2 = 4.
For items 3 and 4 you will not receive any discount at all.
Example 2:
Input: prices = [1,2,3,4,5]
Output: [1,2,3,4,5]
Explanation: In this case, for all items, you will not receive any discount at all.
Example 3:
Input: prices = [10,1,1,6]
Output: [9,0,1,6]
Constraints:
•
1 <= prices.length <= 500•
1 <= prices[i] <= 10002024-12-19
769. Max Chunks To Make Sorted
Topic: Array, Stack, Greedy, Sorting, Monotonic Stack
Difficulty: Medium
Problem:
You are given an integer array
We split
Return the largest number of chunks we can make to sort the array.
Example 1:
Example 2:
Constraints:
•
•
•
• All the elements of
769. Max Chunks To Make Sorted
Topic: Array, Stack, Greedy, Sorting, Monotonic Stack
Difficulty: Medium
Problem:
You are given an integer array
arr of length n that represents a permutation of the integers in the range [0, n - 1].We split
arr into some number of chunks (i.e., partitions), and individually sort each chunk. After concatenating them, the result should equal the sorted array.Return the largest number of chunks we can make to sort the array.
Example 1:
Input: arr = [4,3,2,1,0]
Output: 1
Explanation:
Splitting into two or more chunks will not return the required result.
For example, splitting into [4, 3], [2, 1, 0] will result in [3, 4, 0, 1, 2], which isn't sorted.
Example 2:
Input: arr = [1,0,2,3,4]
Output: 4
Explanation:
We can split into two chunks, such as [1, 0], [2, 3, 4].
However, splitting into [1, 0], [2], [3], [4] is the highest number of chunks possible.
Constraints:
•
n == arr.length•
1 <= n <= 10•
0 <= arr[i] < n• All the elements of
arr are unique.2024-12-20
2415. Reverse Odd Levels of Binary Tree
Topic: Tree, Depth-First Search, Breadth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given the
• For example, suppose the node values at level 3 are
Return the root of the reversed tree.
A binary tree is perfect if all parent nodes have two children and all leaves are on the same level.
The level of a node is the number of edges along the path between it and the root node.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/07/28/first_case1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2022/07/28/second_case3.png
Example 3:
Constraints:
• The number of nodes in the tree is in the range
•
•
2415. Reverse Odd Levels of Binary Tree
Topic: Tree, Depth-First Search, Breadth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given the
root of a perfect binary tree, reverse the node values at each odd level of the tree.• For example, suppose the node values at level 3 are
[2,1,3,4,7,11,29,18], then it should become [18,29,11,7,4,3,1,2].Return the root of the reversed tree.
A binary tree is perfect if all parent nodes have two children and all leaves are on the same level.
The level of a node is the number of edges along the path between it and the root node.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/07/28/first_case1.png
Input: root = [2,3,5,8,13,21,34]
Output: [2,5,3,8,13,21,34]
Explanation:
The tree has only one odd level.
The nodes at level 1 are 3, 5 respectively, which are reversed and become 5, 3.
Example 2:
Image: https://assets.leetcode.com/uploads/2022/07/28/second_case3.png
Input: root = [7,13,11]
Output: [7,11,13]
Explanation:
The nodes at level 1 are 13, 11, which are reversed and become 11, 13.
Example 3:
Input: root = [0,1,2,0,0,0,0,1,1,1,1,2,2,2,2]
Output: [0,2,1,0,0,0,0,2,2,2,2,1,1,1,1]
Explanation:
The odd levels have non-zero values.
The nodes at level 1 were 1, 2, and are 2, 1 after the reversal.
The nodes at level 3 were 1, 1, 1, 1, 2, 2, 2, 2, and are 2, 2, 2, 2, 1, 1, 1, 1 after the reversal.
Constraints:
• The number of nodes in the tree is in the range
[1, 2^14].•
0 <= Node.val <= 10^5•
root is a perfect binary tree.2024-12-21
2872. Maximum Number of K-Divisible Components
Topic: Tree, Depth-First Search
Difficulty: Hard
Problem:
There is an undirected tree with
You are also given a 0-indexed integer array
A valid split of the tree is obtained by removing any set of edges, possibly empty, from the tree such that the resulting components all have values that are divisible by
Return the maximum number of components in any valid split.
Example 1:
Image: https://assets.leetcode.com/uploads/2023/08/07/example12-cropped2svg.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2023/08/07/example21svg-1.jpg
Constraints:
•
•
•
•
•
•
•
• Sum of
• The input is generated such that
2872. Maximum Number of K-Divisible Components
Topic: Tree, Depth-First Search
Difficulty: Hard
Problem:
There is an undirected tree with
n nodes labeled from 0 to n - 1. You are given the integer n and a 2D integer array edges of length n - 1, where edges[i] = [a_i, b_i] indicates that there is an edge between nodes a_i and b_i in the tree.You are also given a 0-indexed integer array
values of length n, where values[i] is the value associated with the i^th node, and an integer k.A valid split of the tree is obtained by removing any set of edges, possibly empty, from the tree such that the resulting components all have values that are divisible by
k, where the value of a connected component is the sum of the values of its nodes.Return the maximum number of components in any valid split.
Example 1:
Image: https://assets.leetcode.com/uploads/2023/08/07/example12-cropped2svg.jpg
Input: n = 5, edges = [[0,2],[1,2],[1,3],[2,4]], values = [1,8,1,4,4], k = 6
Output: 2
Explanation: We remove the edge connecting node 1 with 2. The resulting split is valid because:
- The value of the component containing nodes 1 and 3 is values[1] + values[3] = 12.
- The value of the component containing nodes 0, 2, and 4 is values[0] + values[2] + values[4] = 6.
It can be shown that no other valid split has more than 2 connected components.
Example 2:
Image: https://assets.leetcode.com/uploads/2023/08/07/example21svg-1.jpg
Input: n = 7, edges = [[0,1],[0,2],[1,3],[1,4],[2,5],[2,6]], values = [3,0,6,1,5,2,1], k = 3
Output: 3
Explanation: We remove the edge connecting node 0 with 2, and the edge connecting node 0 with 1. The resulting split is valid because:
- The value of the component containing node 0 is values[0] = 3.
- The value of the component containing nodes 2, 5, and 6 is values[2] + values[5] + values[6] = 9.
- The value of the component containing nodes 1, 3, and 4 is values[1] + values[3] + values[4] = 6.
It can be shown that no other valid split has more than 3 connected components.
Constraints:
•
1 <= n <= 3 * 10^4•
edges.length == n - 1•
edges[i].length == 2•
0 <= a_i, b_i < n•
values.length == n•
0 <= values[i] <= 10^9•
1 <= k <= 10^9• Sum of
values is divisible by k.• The input is generated such that
edges represents a valid tree.2024-12-22
2940. Find Building Where Alice and Bob Can Meet
Topic: Array, Binary Search, Stack, Binary Indexed Tree, Segment Tree, Heap (Priority Queue), Monotonic Stack
Difficulty: Hard
Problem:
You are given a 0-indexed array
If a person is in building
You are also given another array
Return an array
Example 1:
Example 2:
Constraints:
•
•
•
•
•
2940. Find Building Where Alice and Bob Can Meet
Topic: Array, Binary Search, Stack, Binary Indexed Tree, Segment Tree, Heap (Priority Queue), Monotonic Stack
Difficulty: Hard
Problem:
You are given a 0-indexed array
heights of positive integers, where heights[i] represents the height of the i^th building.If a person is in building
i, they can move to any other building j if and only if i < j and heights[i] < heights[j].You are also given another array
queries where queries[i] = [a_i, b_i]. On the i^th query, Alice is in building a_i while Bob is in building b_i.Return an array
ans where ans[i] is the index of the leftmost building where Alice and Bob can meet on the i^th query. If Alice and Bob cannot move to a common building on query i, set ans[i] to -1.Example 1:
Input: heights = [6,4,8,5,2,7], queries = [[0,1],[0,3],[2,4],[3,4],[2,2]]
Output: [2,5,-1,5,2]
Explanation: In the first query, Alice and Bob can move to building 2 since heights[0] < heights[2] and heights[1] < heights[2].
In the second query, Alice and Bob can move to building 5 since heights[0] < heights[5] and heights[3] < heights[5].
In the third query, Alice cannot meet Bob since Alice cannot move to any other building.
In the fourth query, Alice and Bob can move to building 5 since heights[3] < heights[5] and heights[4] < heights[5].
In the fifth query, Alice and Bob are already in the same building.
For ans[i] != -1, It can be shown that ans[i] is the leftmost building where Alice and Bob can meet.
For ans[i] == -1, It can be shown that there is no building where Alice and Bob can meet.
Example 2:
Input: heights = [5,3,8,2,6,1,4,6], queries = [[0,7],[3,5],[5,2],[3,0],[1,6]]
Output: [7,6,-1,4,6]
Explanation: In the first query, Alice can directly move to Bob's building since heights[0] < heights[7].
In the second query, Alice and Bob can move to building 6 since heights[3] < heights[6] and heights[5] < heights[6].
In the third query, Alice cannot meet Bob since Bob cannot move to any other building.
In the fourth query, Alice and Bob can move to building 4 since heights[3] < heights[4] and heights[0] < heights[4].
In the fifth query, Alice can directly move to Bob's building since heights[1] < heights[6].
For ans[i] != -1, It can be shown that ans[i] is the leftmost building where Alice and Bob can meet.
For ans[i] == -1, It can be shown that there is no building where Alice and Bob can meet.
Constraints:
•
1 <= heights.length <= 5 * 10^4•
1 <= heights[i] <= 10^9•
1 <= queries.length <= 5 * 10^4•
queries[i] = [a_i, b_i]•
0 <= a_i, b_i <= heights.length - 12024-12-23
2471. Minimum Number of Operations to Sort a Binary Tree by Level
Topic: Tree, Breadth-First Search, Binary Tree
Difficulty: Medium
Problem:
You are given the
In one operation, you can choose any two nodes at the same level and swap their values.
Return the minimum number of operations needed to make the values at each level sorted in a strictly increasing order.
The level of a node is the number of edges along the path between it and the root node.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/09/18/image-20220918174006-2.png
Example 2:
Image: https://assets.leetcode.com/uploads/2022/09/18/image-20220918174026-3.png
Example 3:
Image: https://assets.leetcode.com/uploads/2022/09/18/image-20220918174052-4.png
Constraints:
• The number of nodes in the tree is in the range
•
• All the values of the tree are unique.
2471. Minimum Number of Operations to Sort a Binary Tree by Level
Topic: Tree, Breadth-First Search, Binary Tree
Difficulty: Medium
Problem:
You are given the
root of a binary tree with unique values.In one operation, you can choose any two nodes at the same level and swap their values.
Return the minimum number of operations needed to make the values at each level sorted in a strictly increasing order.
The level of a node is the number of edges along the path between it and the root node.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/09/18/image-20220918174006-2.png
Input: root = [1,4,3,7,6,8,5,null,null,null,null,9,null,10]
Output: 3
Explanation:
- Swap 4 and 3. The 2^nd level becomes [3,4].
- Swap 7 and 5. The 3^rd level becomes [5,6,8,7].
- Swap 8 and 7. The 3^rd level becomes [5,6,7,8].
We used 3 operations so return 3.
It can be proven that 3 is the minimum number of operations needed.
Example 2:
Image: https://assets.leetcode.com/uploads/2022/09/18/image-20220918174026-3.png
Input: root = [1,3,2,7,6,5,4]
Output: 3
Explanation:
- Swap 3 and 2. The 2^nd level becomes [2,3].
- Swap 7 and 4. The 3^rd level becomes [4,6,5,7].
- Swap 6 and 5. The 3^rd level becomes [4,5,6,7].
We used 3 operations so return 3.
It can be proven that 3 is the minimum number of operations needed.
Example 3:
Image: https://assets.leetcode.com/uploads/2022/09/18/image-20220918174052-4.png
Input: root = [1,2,3,4,5,6]
Output: 0
Explanation: Each level is already sorted in increasing order so return 0.
Constraints:
• The number of nodes in the tree is in the range
[1, 10^5].•
1 <= Node.val <= 10^5• All the values of the tree are unique.
2024-12-24
3203. Find Minimum Diameter After Merging Two Trees
Topic: Tree, Depth-First Search, Breadth-First Search, Graph
Difficulty: Hard
Problem:
There exist two undirected trees with
You must connect one node from the first tree with another node from the second tree with an edge.
Return the minimum possible diameter of the resulting tree.
The diameter of a tree is the length of the longest path between any two nodes in the tree.
Example 1:
Image: https://assets.leetcode.com/uploads/2024/04/22/example11-transformed.png
Input: edges1 = [0,1,0,2,0,3], edges2 = [0,1]
Output: 3
Explanation:
We can obtain a tree of diameter 3 by connecting node 0 from the first tree with any node from the second tree.
Example 2:
Image: https://assets.leetcode.com/uploads/2024/04/22/example211.png
Input: edges1 = [0,1,0,2,0,3,2,4,2,5,3,6,2,7], edges2 = [0,1,0,2,0,3,2,4,2,5,3,6,2,7]
Output: 5
Explanation:
We can obtain a tree of diameter 5 by connecting node 0 from the first tree with node 0 from the second tree.
Constraints:
•
•
•
•
•
•
•
•
• The input is generated such that
3203. Find Minimum Diameter After Merging Two Trees
Topic: Tree, Depth-First Search, Breadth-First Search, Graph
Difficulty: Hard
Problem:
There exist two undirected trees with
n and m nodes, numbered from 0 to n - 1 and from 0 to 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 must connect one node from the first tree with another node from the second tree with an edge.
Return the minimum possible diameter of the resulting tree.
The diameter of a tree is the length of the longest path between any two nodes in the tree.
Example 1:
Image: https://assets.leetcode.com/uploads/2024/04/22/example11-transformed.png
Input: edges1 = [0,1,0,2,0,3], edges2 = [0,1]
Output: 3
Explanation:
We can obtain a tree of diameter 3 by connecting node 0 from the first tree with any node from the second tree.
Example 2:
Image: https://assets.leetcode.com/uploads/2024/04/22/example211.png
Input: edges1 = [0,1,0,2,0,3,2,4,2,5,3,6,2,7], edges2 = [0,1,0,2,0,3,2,4,2,5,3,6,2,7]
Output: 5
Explanation:
We can obtain a tree of diameter 5 by connecting node 0 from the first tree with node 0 from the second tree.
Constraints:
•
1 <= 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.2024-12-25
515. Find Largest Value in Each Tree Row
Topic: Tree, Depth-First Search, Breadth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given the
Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/21/largest_e1.jpg
Example 2:
Constraints:
• The number of nodes in the tree will be in the range
•
515. Find Largest Value in Each Tree Row
Topic: Tree, Depth-First Search, Breadth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given the
root of a binary tree, return an array of the largest value in each row of the tree (0-indexed).Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/21/largest_e1.jpg
Input: root = [1,3,2,5,3,null,9]
Output: [1,3,9]
Example 2:
Input: root = [1,2,3]
Output: [1,3]
Constraints:
• The number of nodes in the tree will be in the range
[0, 10^4].•
-2^31 <= Node.val <= 2^31 - 12024-12-26
494. Target Sum
Topic: Array, Dynamic Programming, Backtracking
Difficulty: Medium
Problem:
You are given an integer array
You want to build an expression out of nums by adding one of the symbols
• For example, if
Return the number of different expressions that you can build, which evaluates to
Example 1:
Example 2:
Constraints:
•
•
•
•
494. Target Sum
Topic: Array, Dynamic Programming, Backtracking
Difficulty: Medium
Problem:
You are given an integer array
nums and an integer target.You want to build an expression out of nums by adding one of the symbols
'+' and '-' before each integer in nums and then concatenate all the integers.• For example, if
nums = [2, 1], you can add a '+' before 2 and a '-' before 1 and concatenate them to build the expression "+2-1".Return the number of different expressions that you can build, which evaluates to
target.Example 1:
Input: nums = [1,1,1,1,1], target = 3
Output: 5
Explanation: There are 5 ways to assign symbols to make the sum of nums be target 3.
-1 + 1 + 1 + 1 + 1 = 3
+1 - 1 + 1 + 1 + 1 = 3
+1 + 1 - 1 + 1 + 1 = 3
+1 + 1 + 1 - 1 + 1 = 3
+1 + 1 + 1 + 1 - 1 = 3
Example 2:
Input: nums = [1], target = 1
Output: 1
Constraints:
•
1 <= nums.length <= 20•
0 <= nums[i] <= 1000•
0 <= sum(nums[i]) <= 1000•
-1000 <= target <= 10002024-12-27
1014. Best Sightseeing Pair
Topic: Array, Dynamic Programming
Difficulty: Medium
Problem:
You are given an integer array
The score of a pair (
Return the maximum score of a pair of sightseeing spots.
Example 1:
Example 2:
Constraints:
•
•
1014. Best Sightseeing Pair
Topic: Array, Dynamic Programming
Difficulty: Medium
Problem:
You are given an integer array
values where valuesi represents the value of the i^th sightseeing spot. Two sightseeing spots i and j have a distance j - i between them.The score of a pair (
i < j) of sightseeing spots is values[i] + values[j] + i - j: the sum of the values of the sightseeing spots, minus the distance between them.Return the maximum score of a pair of sightseeing spots.
Example 1:
Input: values = [8,1,5,2,6]
Output: 11
Explanation: i = 0, j = 2, values[i] + values[j] + i - j = 8 + 5 + 0 - 2 = 11
Example 2:
Input: values = [1,2]
Output: 2
Constraints:
•
2 <= values.length <= 5 * 10^4•
1 <= values[i] <= 10002024-12-28
689. Maximum Sum of 3 Non-Overlapping Subarrays
Topic: Array, Dynamic Programming
Difficulty: Hard
Problem:
Given an integer array
Return the result as a list of indices representing the starting position of each interval (0-indexed). If there are multiple answers, return the lexicographically smallest one.
Example 1:
Example 2:
Constraints:
•
•
•
689. Maximum Sum of 3 Non-Overlapping Subarrays
Topic: Array, Dynamic Programming
Difficulty: Hard
Problem:
Given an integer array
nums and an integer k, find three non-overlapping subarrays of length k with maximum sum and return them.Return the result as a list of indices representing the starting position of each interval (0-indexed). If there are multiple answers, return the lexicographically smallest one.
Example 1:
Input: nums = [1,2,1,2,6,7,5,1], k = 2
Output: [0,3,5]
Explanation: Subarrays [1, 2], [2, 6], [7, 5] correspond to the starting indices [0, 3, 5].
We could have also taken [2, 1], but an answer of [1, 3, 5] would be lexicographically larger.
Example 2:
Input: nums = [1,2,1,2,1,2,1,2,1], k = 2
Output: [0,2,4]
Constraints:
•
1 <= nums.length <= 2 * 10^4•
1 <= nums[i] < 2^16•
1 <= k <= floor(nums.length / 3)2024-12-29
1639. Number of Ways to Form a Target String Given a Dictionary
Topic: Array, String, Dynamic Programming
Difficulty: Hard
Problem:
You are given a list of strings of the same length
Your task is to form
•
• To form the
• Once you use the
• Repeat the process until you form the string
Notice that you can use multiple characters from the same string in
Return the number of ways to form
Example 1:
Example 2:
Constraints:
•
•
• All strings in
•
•
1639. Number of Ways to Form a Target String Given a Dictionary
Topic: Array, String, Dynamic Programming
Difficulty: Hard
Problem:
You are given a list of strings of the same length
words and a string target.Your task is to form
target using the given words under the following rules:•
target should be formed from left to right.• To form the
i^th character (0-indexed) of target, you can choose the k^th character of the j^th string in words if target[i] = words[j][k].• Once you use the
k^th character of the j^th string of words, you can no longer use the x^th character of any string in words where x <= k. In other words, all characters to the left of or at index k become unusuable for every string.• Repeat the process until you form the string
target.Notice that you can use multiple characters from the same string in
words provided the conditions above are met.Return the number of ways to form
target from words. Since the answer may be too large, return it modulo 10^9 + 7.Example 1:
Input: words = ["acca","bbbb","caca"], target = "aba"
Output: 6
Explanation: There are 6 ways to form target.
"aba" -> index 0 ("acca"), index 1 ("bbbb"), index 3 ("caca")
"aba" -> index 0 ("acca"), index 2 ("bbbb"), index 3 ("caca")
"aba" -> index 0 ("acca"), index 1 ("bbbb"), index 3 ("acca")
"aba" -> index 0 ("acca"), index 2 ("bbbb"), index 3 ("acca")
"aba" -> index 1 ("caca"), index 2 ("bbbb"), index 3 ("acca")
"aba" -> index 1 ("caca"), index 2 ("bbbb"), index 3 ("caca")
Example 2:
Input: words = ["abba","baab"], target = "bab"
Output: 4
Explanation: There are 4 ways to form target.
"bab" -> index 0 ("baab"), index 1 ("baab"), index 2 ("abba")
"bab" -> index 0 ("baab"), index 1 ("baab"), index 3 ("baab")
"bab" -> index 0 ("baab"), index 2 ("baab"), index 3 ("baab")
"bab" -> index 1 ("abba"), index 2 ("baab"), index 3 ("baab")
Constraints:
•
1 <= words.length <= 1000•
1 <= words[i].length <= 1000• All strings in
words have the same length.•
1 <= target.length <= 1000•
words[i] and target contain only lowercase English letters.2024-12-30
2466. Count Ways To Build Good Strings
Topic: Dynamic Programming
Difficulty: Medium
Problem:
Given the integers
• Append the character
• Append the character
This can be performed any number of times.
A good string is a string constructed by the above process having a length between
Return the number of different good strings that can be constructed satisfying these properties. Since the answer can be large, return it modulo
Example 1:
Example 2:
Constraints:
•
•
2466. Count Ways To Build Good Strings
Topic: Dynamic Programming
Difficulty: Medium
Problem:
Given the integers
zero, one, low, and high, we can construct a string by starting with an empty string, and then at each step perform either of the following:• Append the character
'0' zero times.• Append the character
'1' one times.This can be performed any number of times.
A good string is a string constructed by the above process having a length between
low and high (inclusive).Return the number of different good strings that can be constructed satisfying these properties. Since the answer can be large, return it modulo
10^9 + 7.Example 1:
Input: low = 3, high = 3, zero = 1, one = 1
Output: 8
Explanation:
One possible valid good string is "011".
It can be constructed as follows: "" -> "0" -> "01" -> "011".
All binary strings from "000" to "111" are good strings in this example.
Example 2:
Input: low = 2, high = 3, zero = 1, one = 2
Output: 5
Explanation: The good strings are "00", "11", "000", "110", and "011".
Constraints:
•
1 <= low <= high <= 10^5•
1 <= zero, one <= low2024-12-31
983. Minimum Cost For Tickets
Topic: Array, Dynamic Programming
Difficulty: Medium
Problem:
You have planned some train traveling one year in advance. The days of the year in which you will travel are given as an integer array
Train tickets are sold in three different ways:
• a 1-day pass is sold for
• a 7-day pass is sold for
• a 30-day pass is sold for
The passes allow that many days of consecutive travel.
• For example, if we get a 7-day pass on day
Return the minimum number of dollars you need to travel every day in the given list of days.
Example 1:
Example 2:
Constraints:
•
•
•
•
•
983. Minimum Cost For Tickets
Topic: Array, Dynamic Programming
Difficulty: Medium
Problem:
You have planned some train traveling one year in advance. The days of the year in which you will travel are given as an integer array
days. Each day is an integer from 1 to 365.Train tickets are sold in three different ways:
• a 1-day pass is sold for
costs[0] dollars,• a 7-day pass is sold for
costs[1] dollars, and• a 30-day pass is sold for
costs[2] dollars.The passes allow that many days of consecutive travel.
• For example, if we get a 7-day pass on day
2, then we can travel for 7 days: 2, 3, 4, 5, 6, 7, and 8.Return the minimum number of dollars you need to travel every day in the given list of days.
Example 1:
Input: days = [1,4,6,7,8,20], costs = [2,7,15]
Output: 11
Explanation: For example, here is one way to buy passes that lets you travel your travel plan:
On day 1, you bought a 1-day pass for costs[0] = $2, which covered day 1.
On day 3, you bought a 7-day pass for costs[1] = $7, which covered days 3, 4, ..., 9.
On day 20, you bought a 1-day pass for costs[0] = $2, which covered day 20.
In total, you spent $11 and covered all the days of your travel.
Example 2:
Input: days = [1,2,3,4,5,6,7,8,9,10,30,31], costs = [2,7,15]
Output: 17
Explanation: For example, here is one way to buy passes that lets you travel your travel plan:
On day 1, you bought a 30-day pass for costs[2] = $15 which covered days 1, 2, ..., 30.
On day 31, you bought a 1-day pass for costs[0] = $2 which covered day 31.
In total, you spent $17 and covered all the days of your travel.
Constraints:
•
1 <= days.length <= 365•
1 <= days[i] <= 365•
days is in strictly increasing order.•
costs.length == 3•
1 <= costs[i] <= 10002025-01-01
1422. Maximum Score After Splitting a String
Topic: String, Prefix Sum
Difficulty: Easy
Problem:
Given a string
The score after splitting a string is the number of zeros in the left substring plus the number of ones in the right substring.
Example 1:
Example 2:
Example 3:
Constraints:
•
• The string
1422. Maximum Score After Splitting a String
Topic: String, Prefix Sum
Difficulty: Easy
Problem:
Given a string
s of zeros and ones, return the maximum score after splitting the string into two non-empty substrings (i.e. left substring and right substring).The score after splitting a string is the number of zeros in the left substring plus the number of ones in the right substring.
Example 1:
Input: s = "011101"
Output: 5
Explanation:
All possible ways of splitting s into two non-empty substrings are:
left = "0" and right = "11101", score = 1 + 4 = 5
left = "01" and right = "1101", score = 1 + 3 = 4
left = "011" and right = "101", score = 1 + 2 = 3
left = "0111" and right = "01", score = 1 + 1 = 2
left = "01110" and right = "1", score = 2 + 1 = 3
Example 2:
Input: s = "00111"
Output: 5
Explanation: When left = "00" and right = "111", we get the maximum score = 2 + 3 = 5
Example 3:
Input: s = "1111"
Output: 3
Constraints:
•
2 <= s.length <= 500• The string
s consists of characters '0' and '1' only.2025-01-02
2559. Count Vowel Strings in Ranges
Topic: Array, String, Prefix Sum
Difficulty: Medium
Problem:
You are given a 0-indexed array of strings
Each query
Return an array
Note that the vowel letters are
Example 1:
Example 2:
Constraints:
•
•
•
•
•
•
2559. Count Vowel Strings in Ranges
Topic: Array, String, Prefix Sum
Difficulty: Medium
Problem:
You are given a 0-indexed array of strings
words and a 2D array of integers queries.Each query
queries[i] = [l_i, r_i] asks us to find the number of strings present in the range l_i to r_i (both inclusive) of words that start and end with a vowel.Return an array
ans of size queries.length, where ans[i] is the answer to the i^th query.Note that the vowel letters are
'a', 'e', 'i', 'o', and 'u'.Example 1:
Input: words = ["aba","bcb","ece","aa","e"], queries = [[0,2],[1,4],[1,1]]
Output: [2,3,0]
Explanation: The strings starting and ending with a vowel are "aba", "ece", "aa" and "e".
The answer to the query [0,2] is 2 (strings "aba" and "ece").
to query [1,4] is 3 (strings "ece", "aa", "e").
to query [1,1] is 0.
We return [2,3,0].
Example 2:
Input: words = ["a","e","i"], queries = [[0,2],[0,1],[2,2]]
Output: [3,2,1]
Explanation: Every string satisfies the conditions, so we return [3,2,1].
Constraints:
•
1 <= words.length <= 10^5•
1 <= words[i].length <= 40•
words[i] consists only of lowercase English letters.•
sum(words[i].length) <= 3 * 10^5•
1 <= queries.length <= 10^5•
0 <= l_i <= r_i < words.length2025-01-03
2270. Number of Ways to Split Array
Topic: Array, Prefix Sum
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
• The sum of the first
• There is at least one element to the right of
Return the number of valid splits in
Example 1:
Example 2:
Constraints:
•
•
2270. Number of Ways to Split Array
Topic: Array, Prefix Sum
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
nums of length n.nums contains a valid split at index i if the following are true:• The sum of the first
i + 1 elements is greater than or equal to the sum of the last n - i - 1 elements.• There is at least one element to the right of
i. That is, 0 <= i < n - 1.Return the number of valid splits in
nums.Example 1:
Input: nums = [10,4,-8,7]
Output: 2
Explanation:
There are three ways of splitting nums into two non-empty parts:
- Split nums at index 0. Then, the first part is [10], and its sum is 10. The second part is [4,-8,7], and its sum is 3. Since 10 >= 3, i = 0 is a valid split.
- Split nums at index 1. Then, the first part is [10,4], and its sum is 14. The second part is [-8,7], and its sum is -1. Since 14 >= -1, i = 1 is a valid split.
- Split nums at index 2. Then, the first part is [10,4,-8], and its sum is 6. The second part is [7], and its sum is 7. Since 6 < 7, i = 2 is not a valid split.
Thus, the number of valid splits in nums is 2.
Example 2:
Input: nums = [2,3,1,0]
Output: 2
Explanation:
There are two valid splits in nums:
- Split nums at index 1. Then, the first part is [2,3], and its sum is 5. The second part is [1,0], and its sum is 1. Since 5 >= 1, i = 1 is a valid split.
- Split nums at index 2. Then, the first part is [2,3,1], and its sum is 6. The second part is [0], and its sum is 0. Since 6 >= 0, i = 2 is a valid split.
Constraints:
•
2 <= nums.length <= 10^5•
-10^5 <= nums[i] <= 10^5