2024-06-18
826. Most Profit Assigning Work
Topic: Array, Two Pointers, Binary Search, Greedy, Sorting
Difficulty: Medium
Problem:
You have
•
•
Every worker can be assigned at most one job, but one job can be completed multiple times.
• For example, if three workers attempt the same job that pays
Return the maximum profit we can achieve after assigning the workers to the jobs.
Example 1:
Example 2:
Constraints:
•
•
•
•
•
826. Most Profit Assigning Work
Topic: Array, Two Pointers, Binary Search, Greedy, Sorting
Difficulty: Medium
Problem:
You have
n jobs and m workers. You are given three arrays: difficulty, profit, and worker where:•
difficulty[i] and profit[i] are the difficulty and the profit of the i^th job, and•
worker[j] is the ability of j^th worker (i.e., the j^th worker can only complete a job with difficulty at most worker[j]).Every worker can be assigned at most one job, but one job can be completed multiple times.
• For example, if three workers attempt the same job that pays
$1, then the total profit will be $3. If a worker cannot complete any job, their profit is $0.Return the maximum profit we can achieve after assigning the workers to the jobs.
Example 1:
Input: difficulty = [2,4,6,8,10], profit = [10,20,30,40,50], worker = [4,5,6,7]
Output: 100
Explanation: Workers are assigned jobs of difficulty [4,4,6,6] and they get a profit of [20,20,30,30] separately.
Example 2:
Input: difficulty = [85,47,57], profit = [24,66,99], worker = [40,25,25]
Output: 0
Constraints:
•
n == difficulty.length•
n == profit.length•
m == worker.length•
1 <= n, m <= 10^4•
1 <= difficulty[i], profit[i], worker[i] <= 10^52024-06-19
1482. Minimum Number of Days to Make m Bouquets
Topic: Array, Binary Search
Difficulty: Medium
Problem:
You are given an integer array
You want to make
The garden consists of
Return the minimum number of days you need to wait to be able to make
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
•
1482. Minimum Number of Days to Make m Bouquets
Topic: Array, Binary Search
Difficulty: Medium
Problem:
You are given an integer array
bloomDay, an integer m and an integer k.You want to make
m bouquets. To make a bouquet, you need to use k adjacent flowers from the garden.The garden consists of
n flowers, the i^th flower will bloom in the bloomDay[i] and then can be used in exactly one bouquet.Return the minimum number of days you need to wait to be able to make
m bouquets from the garden. If it is impossible to make m bouquets return -1.Example 1:
Input: bloomDay = [1,10,3,10,2], m = 3, k = 1
Output: 3
Explanation: Let us see what happened in the first three days. x means flower bloomed and _ means flower did not bloom in the garden.
We need 3 bouquets each should contain 1 flower.
After day 1: [x, _, _, _, _] // we can only make one bouquet.
After day 2: [x, _, _, _, x] // we can only make two bouquets.
After day 3: [x, _, x, _, x] // we can make 3 bouquets. The answer is 3.
Example 2:
Input: bloomDay = [1,10,3,10,2], m = 3, k = 2
Output: -1
Explanation: We need 3 bouquets each has 2 flowers, that means we need 6 flowers. We only have 5 flowers so it is impossible to get the needed bouquets and we return -1.
Example 3:
Input: bloomDay = [7,7,7,7,12,7,7], m = 2, k = 3
Output: 12
Explanation: We need 2 bouquets each should have 3 flowers.
Here is the garden after the 7 and 12 days:
After day 7: [x, x, x, x, _, x, x]
We can make one bouquet of the first three flowers that bloomed. We cannot make another bouquet from the last three flowers that bloomed because they are not adjacent.
After day 12: [x, x, x, x, x, x, x]
It is obvious that we can make two bouquets in different ways.
Constraints:
•
bloomDay.length == n•
1 <= n <= 10^5•
1 <= bloomDay[i] <= 10^9•
1 <= m <= 10^6•
1 <= k <= n2024-06-20
1552. Magnetic Force Between Two Balls
Topic: Array, Binary Search, Sorting
Difficulty: Medium
Problem:
In the universe Earth C-137, Rick discovered a special form of magnetic force between two balls if they are put in his new invented basket. Rick has
Rick stated that magnetic force between two different balls at positions
Given the integer array
Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/11/q3v1.jpg
Example 2:
Constraints:
•
•
•
• All integers in
•
1552. Magnetic Force Between Two Balls
Topic: Array, Binary Search, Sorting
Difficulty: Medium
Problem:
In the universe Earth C-137, Rick discovered a special form of magnetic force between two balls if they are put in his new invented basket. Rick has
n empty baskets, the i^th basket is at position[i], Morty has m balls and needs to distribute the balls into the baskets such that the minimum magnetic force between any two balls is maximum.Rick stated that magnetic force between two different balls at positions
x and y is |x - y|.Given the integer array
position and the integer m. Return the required force.Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/11/q3v1.jpg
Input: position = [1,2,3,4,7], m = 3
Output: 3
Explanation: Distributing the 3 balls into baskets 1, 4 and 7 will make the magnetic force between ball pairs [3, 3, 6]. The minimum magnetic force is 3. We cannot achieve a larger minimum magnetic force than 3.
Example 2:
Input: position = [5,4,3,2,1,1000000000], m = 2
Output: 999999999
Explanation: We can use baskets 1 and 1000000000.
Constraints:
•
n == position.length•
2 <= n <= 10^5•
1 <= position[i] <= 10^9• All integers in
position are distinct.•
2 <= m <= position.length2024-06-21
1052. Grumpy Bookstore Owner
Topic: Array, Sliding Window
Difficulty: Medium
Problem:
There is a bookstore owner that has a store open for
On some minutes, the bookstore owner is grumpy. You are given a binary array grumpy where
When the bookstore owner is grumpy, the customers of that minute are not satisfied, otherwise, they are satisfied.
The bookstore owner knows a secret technique to keep themselves not grumpy for
Return the maximum number of customers that can be satisfied throughout the day.
Example 1:
Example 2:
Constraints:
•
•
•
•
1052. Grumpy Bookstore Owner
Topic: Array, Sliding Window
Difficulty: Medium
Problem:
There is a bookstore owner that has a store open for
n minutes. Every minute, some number of customers enter the store. You are given an integer array customers of length n where customers[i] is the number of the customer that enters the store at the start of the i^th minute and all those customers leave after the end of that minute.On some minutes, the bookstore owner is grumpy. You are given a binary array grumpy where
grumpy[i] is 1 if the bookstore owner is grumpy during the i^th minute, and is 0 otherwise.When the bookstore owner is grumpy, the customers of that minute are not satisfied, otherwise, they are satisfied.
The bookstore owner knows a secret technique to keep themselves not grumpy for
minutes consecutive minutes, but can only use it once.Return the maximum number of customers that can be satisfied throughout the day.
Example 1:
Input: customers = [1,0,1,2,1,1,7,5], grumpy = [0,1,0,1,0,1,0,1], minutes = 3
Output: 16
Explanation: The bookstore owner keeps themselves not grumpy for the last 3 minutes.
The maximum number of customers that can be satisfied = 1 + 1 + 1 + 1 + 7 + 5 = 16.
Example 2:
Input: customers = [1], grumpy = [0], minutes = 1
Output: 1
Constraints:
•
n == customers.length == grumpy.length•
1 <= minutes <= n <= 2 * 10^4•
0 <= customers[i] <= 1000•
grumpy[i] is either 0 or 1.2024-06-22
1248. Count Number of Nice Subarrays
Topic: Array, Hash Table, Math, Sliding Window
Difficulty: Medium
Problem:
Given an array of integers
Return the number of nice sub-arrays.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1248. Count Number of Nice Subarrays
Topic: Array, Hash Table, Math, Sliding Window
Difficulty: Medium
Problem:
Given an array of integers
nums and an integer k. A continuous subarray is called nice if there are k odd numbers on it.Return the number of nice sub-arrays.
Example 1:
Input: nums = [1,1,2,1,1], k = 3
Output: 2
Explanation: The only sub-arrays with 3 odd numbers are [1,1,2,1] and [1,2,1,1].
Example 2:
Input: nums = [2,4,6], k = 1
Output: 0
Explanation: There are no odd numbers in the array.
Example 3:
Input: nums = [2,2,2,1,2,2,1,2,2,2], k = 2
Output: 16
Constraints:
•
1 <= nums.length <= 50000•
1 <= nums[i] <= 10^5•
1 <= k <= nums.length2024-06-23
1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
Topic: Array, Queue, Sliding Window, Heap (Priority Queue), Ordered Set, Monotonic Queue
Difficulty: Medium
Problem:
Given an array of integers
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
Topic: Array, Queue, Sliding Window, Heap (Priority Queue), Ordered Set, Monotonic Queue
Difficulty: Medium
Problem:
Given an array of integers
nums and an integer limit, return the size of the longest non-empty subarray such that the absolute difference between any two elements of this subarray is less than or equal to limit.Example 1:
Input: nums = [8,2,4,7], limit = 4
Output: 2
Explanation: All subarrays are:
[8] with maximum absolute diff |8-8| = 0 <= 4.
[8,2] with maximum absolute diff |8-2| = 6 > 4.
[8,2,4] with maximum absolute diff |8-2| = 6 > 4.
[8,2,4,7] with maximum absolute diff |8-2| = 6 > 4.
[2] with maximum absolute diff |2-2| = 0 <= 4.
[2,4] with maximum absolute diff |2-4| = 2 <= 4.
[2,4,7] with maximum absolute diff |2-7| = 5 > 4.
[4] with maximum absolute diff |4-4| = 0 <= 4.
[4,7] with maximum absolute diff |4-7| = 3 <= 4.
[7] with maximum absolute diff |7-7| = 0 <= 4.
Therefore, the size of the longest subarray is 2.
Example 2:
Input: nums = [10,1,2,4,7,2], limit = 5
Output: 4
Explanation: The subarray [2,4,7,2] is the longest since the maximum absolute diff is |2-7| = 5 <= 5.
Example 3:
Input: nums = [4,2,2,2,4,4,2,2], limit = 0
Output: 3
Constraints:
•
1 <= nums.length <= 10^5•
1 <= nums[i] <= 10^9•
0 <= limit <= 10^92024-06-24
995. Minimum Number of K Consecutive Bit Flips
Topic: Array, Bit Manipulation, Queue, Sliding Window, Prefix Sum
Difficulty: Hard
Problem:
You are given a binary array
A k-bit flip is choosing a subarray of length
Return the minimum number of k-bit flips required so that there is no
A subarray is a contiguous part of an array.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
995. Minimum Number of K Consecutive Bit Flips
Topic: Array, Bit Manipulation, Queue, Sliding Window, Prefix Sum
Difficulty: Hard
Problem:
You are given a binary array
nums and an integer k.A k-bit flip is choosing a subarray of length
k from nums and simultaneously changing every 0 in the subarray to 1, and every 1 in the subarray to 0.Return the minimum number of k-bit flips required so that there is no
0 in the array. If it is not possible, return -1.A subarray is a contiguous part of an array.
Example 1:
Input: nums = [0,1,0], k = 1
Output: 2
Explanation: Flip nums[0], then flip nums[2].
Example 2:
Input: nums = [1,1,0], k = 2
Output: -1
Explanation: No matter how we flip subarrays of size 2, we cannot make the array become [1,1,1].
Example 3:
Input: nums = [0,0,0,1,0,1,1,0], k = 3
Output: 3
Explanation:
Flip nums[0],nums[1],nums[2]: nums becomes [1,1,1,1,0,1,1,0]
Flip nums[4],nums[5],nums[6]: nums becomes [1,1,1,1,1,0,0,0]
Flip nums[5],nums[6],nums[7]: nums becomes [1,1,1,1,1,1,1,1]
Constraints:
•
1 <= nums.length <= 10^5•
1 <= k <= nums.length2024-06-25
1038. Binary Search Tree to Greater Sum Tree
Topic: Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Medium
Problem:
Given the
As a reminder, a binary search tree is a tree that satisfies these constraints:
• The left subtree of a node contains only nodes with keys less than the node's key.
• The right subtree of a node contains only nodes with keys greater than the node's key.
• Both the left and right subtrees must also be binary search trees.
Example 1:
Image: https://assets.leetcode.com/uploads/2019/05/02/tree.png
Example 2:
Constraints:
• The number of nodes in the tree is in the range
•
• All the values in the tree are unique.
Note: This question is the same as 538: <https://leetcode.com/problems/convert-bst-to-greater-tree/>
1038. Binary Search Tree to Greater Sum Tree
Topic: Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Medium
Problem:
Given the
root of a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus the sum of all keys greater than the original key in BST.As a reminder, a binary search tree is a tree that satisfies these constraints:
• The left subtree of a node contains only nodes with keys less than the node's key.
• The right subtree of a node contains only nodes with keys greater than the node's key.
• Both the left and right subtrees must also be binary search trees.
Example 1:
Image: https://assets.leetcode.com/uploads/2019/05/02/tree.png
Input: root = [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
Output: [30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]
Example 2:
Input: root = [0,null,1]
Output: [1,null,1]
Constraints:
• The number of nodes in the tree is in the range
[1, 100].•
0 <= Node.val <= 100• All the values in the tree are unique.
Note: This question is the same as 538: <https://leetcode.com/problems/convert-bst-to-greater-tree/>
2024-06-26
1382. Balance a Binary Search Tree
Topic: Divide and Conquer, Greedy, Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Medium
Problem:
Given the
A binary search tree is balanced if the depth of the two subtrees of every node never differs by more than
Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/10/balance1-tree.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/08/10/balanced2-tree.jpg
Constraints:
• The number of nodes in the tree is in the range
•
1382. Balance a Binary Search Tree
Topic: Divide and Conquer, Greedy, Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Medium
Problem:
Given the
root of a binary search tree, return a balanced binary search tree with the same node values. If there is more than one answer, return any of them.A binary search tree is balanced if the depth of the two subtrees of every node never differs by more than
1.Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/10/balance1-tree.jpg
Input: root = [1,null,2,null,3,null,4,null,null]
Output: [2,1,3,null,null,null,4]
Explanation: This is not the only correct answer, [3,1,4,null,2] is also correct.
Example 2:
Image: https://assets.leetcode.com/uploads/2021/08/10/balanced2-tree.jpg
Input: root = [2,1,3]
Output: [2,1,3]
Constraints:
• The number of nodes in the tree is in the range
[1, 10^4].•
1 <= Node.val <= 10^52024-06-27
1791. Find Center of Star Graph
Topic: Graph
Difficulty: Easy
Problem:
There is an undirected star graph consisting of
You are given a 2D integer array
Example 1:
Image: https://assets.leetcode.com/uploads/2021/02/24/star_graph.png
Example 2:
Constraints:
•
•
•
•
•
• The given
1791. Find Center of Star Graph
Topic: Graph
Difficulty: Easy
Problem:
There is an undirected star graph consisting of
n nodes labeled from 1 to n. A star graph is a graph where there is one center node and exactly n - 1 edges that connect the center node with every other node.You are given a 2D integer array
edges where each edges[i] = [u_i, v_i] indicates that there is an edge between the nodes u_i and v_i. Return the center of the given star graph.Example 1:
Image: https://assets.leetcode.com/uploads/2021/02/24/star_graph.png
Input: edges = [[1,2],[2,3],[4,2]]
Output: 2
Explanation: As shown in the figure above, node 2 is connected to every other node, so 2 is the center.
Example 2:
Input: edges = [[1,2],[5,1],[1,3],[1,4]]
Output: 1
Constraints:
•
3 <= n <= 10^5•
edges.length == n - 1•
edges[i].length == 2•
1 <= u_i, v_i <= n•
u_i != v_i• The given
edges represent a valid star graph.2024-06-28
2285. Maximum Total Importance of Roads
Topic: Greedy, Graph, Sorting, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given an integer
You are also given a 2D integer array
You need to assign each city with an integer value from
Return the maximum total importance of all roads possible after assigning the values optimally.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/04/07/ex1drawio.png
Example 2:
Image: https://assets.leetcode.com/uploads/2022/04/07/ex2drawio.png
Constraints:
•
•
•
•
•
• There are no duplicate roads.
2285. Maximum Total Importance of Roads
Topic: Greedy, Graph, Sorting, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given an integer
n denoting the number of cities in a country. The cities are numbered from 0 to n - 1.You are also given a 2D integer array
roads where roads[i] = [a_i, b_i] denotes that there exists a bidirectional road connecting cities a_i and b_i.You need to assign each city with an integer value from
1 to n, where each value can only be used once. The importance of a road is then defined as the sum of the values of the two cities it connects.Return the maximum total importance of all roads possible after assigning the values optimally.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/04/07/ex1drawio.png
Input: n = 5, roads = [[0,1],[1,2],[2,3],[0,2],[1,3],[2,4]]
Output: 43
Explanation: The figure above shows the country and the assigned values of [2,4,5,3,1].
- The road (0,1) has an importance of 2 + 4 = 6.
- The road (1,2) has an importance of 4 + 5 = 9.
- The road (2,3) has an importance of 5 + 3 = 8.
- The road (0,2) has an importance of 2 + 5 = 7.
- The road (1,3) has an importance of 4 + 3 = 7.
- The road (2,4) has an importance of 5 + 1 = 6.
The total importance of all roads is 6 + 9 + 8 + 7 + 7 + 6 = 43.
It can be shown that we cannot obtain a greater total importance than 43.
Example 2:
Image: https://assets.leetcode.com/uploads/2022/04/07/ex2drawio.png
Input: n = 5, roads = [[0,3],[2,4],[1,3]]
Output: 20
Explanation: The figure above shows the country and the assigned values of [4,3,2,5,1].
- The road (0,3) has an importance of 4 + 5 = 9.
- The road (2,4) has an importance of 2 + 1 = 3.
- The road (1,3) has an importance of 3 + 5 = 8.
The total importance of all roads is 9 + 3 + 8 = 20.
It can be shown that we cannot obtain a greater total importance than 20.
Constraints:
•
2 <= n <= 5 * 10^4•
1 <= roads.length <= 5 * 10^4•
roads[i].length == 2•
0 <= a_i, b_i <= n - 1•
a_i != b_i• There are no duplicate roads.
2024-06-29
2192. All Ancestors of a Node in a Directed Acyclic Graph
Topic: Depth-First Search, Breadth-First Search, Graph, Topological Sort
Difficulty: Medium
Problem:
You are given a positive integer
You are also given a 2D integer array
Return a list
A node
Example 1:
Image: https://assets.leetcode.com/uploads/2019/12/12/e1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2019/12/12/e2.png
Constraints:
•
•
•
•
•
• There are no duplicate edges.
• The graph is directed and acyclic.
2192. All Ancestors of a Node in a Directed Acyclic Graph
Topic: Depth-First Search, Breadth-First Search, Graph, Topological Sort
Difficulty: Medium
Problem:
You are given a positive integer
n representing the number of nodes of a Directed Acyclic Graph (DAG). The nodes are numbered from 0 to n - 1 (inclusive).You are also given a 2D integer array
edges, where edges[i] = [from_i, to_i] denotes that there is a unidirectional edge from from_i to to_i in the graph.Return a list
answer, where answer[i] is the list of ancestors of the i^th node, sorted in ascending order.A node
u is an ancestor of another node v if u can reach v via a set of edges.Example 1:
Image: https://assets.leetcode.com/uploads/2019/12/12/e1.png
Input: n = 8, edgeList = [[0,3],[0,4],[1,3],[2,4],[2,7],[3,5],[3,6],[3,7],[4,6]]
Output: [[],[],[],[0,1],[0,2],[0,1,3],[0,1,2,3,4],[0,1,2,3]]
Explanation:
The above diagram represents the input graph.
- Nodes 0, 1, and 2 do not have any ancestors.
- Node 3 has two ancestors 0 and 1.
- Node 4 has two ancestors 0 and 2.
- Node 5 has three ancestors 0, 1, and 3.
- Node 6 has five ancestors 0, 1, 2, 3, and 4.
- Node 7 has four ancestors 0, 1, 2, and 3.
Example 2:
Image: https://assets.leetcode.com/uploads/2019/12/12/e2.png
Input: n = 5, edgeList = [[0,1],[0,2],[0,3],[0,4],[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
Output: [[],[0],[0,1],[0,1,2],[0,1,2,3]]
Explanation:
The above diagram represents the input graph.
- Node 0 does not have any ancestor.
- Node 1 has one ancestor 0.
- Node 2 has two ancestors 0 and 1.
- Node 3 has three ancestors 0, 1, and 2.
- Node 4 has four ancestors 0, 1, 2, and 3.
Constraints:
•
1 <= n <= 1000•
0 <= edges.length <= min(2000, n * (n - 1) / 2)•
edges[i].length == 2•
0 <= from_i, to_i <= n - 1•
from_i != to_i• There are no duplicate edges.
• The graph is directed and acyclic.
2024-06-30
1579. Remove Max Number of Edges to Keep Graph Fully Traversable
Topic: Union Find, Graph
Difficulty: Hard
Problem:
Alice and Bob have an undirected graph of
• Type 1: Can be traversed by Alice only.
• Type 2: Can be traversed by Bob only.
• Type 3: Can be traversed by both Alice and Bob.
Given an array
Return the maximum number of edges you can remove, or return
Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/19/ex1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2020/08/19/ex2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2020/08/19/ex3.png
Constraints:
•
•
•
•
•
• All tuples
1579. Remove Max Number of Edges to Keep Graph Fully Traversable
Topic: Union Find, Graph
Difficulty: Hard
Problem:
Alice and Bob have an undirected graph of
n nodes and three types of edges:• Type 1: Can be traversed by Alice only.
• Type 2: Can be traversed by Bob only.
• Type 3: Can be traversed by both Alice and Bob.
Given an array
edges where edges[i] = [type_i, u_i, v_i] represents a bidirectional edge of type type_i between nodes u_i and v_i, find the maximum number of edges you can remove so that after removing the edges, the graph can still be fully traversed by both Alice and Bob. The graph is fully traversed by Alice and Bob if starting from any node, they can reach all other nodes.Return the maximum number of edges you can remove, or return
-1 if Alice and Bob cannot fully traverse the graph.Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/19/ex1.png
Input: n = 4, edges = [[3,1,2],[3,2,3],[1,1,3],[1,2,4],[1,1,2],[2,3,4]]
Output: 2
Explanation: If we remove the 2 edges [1,1,2] and [1,1,3]. The graph will still be fully traversable by Alice and Bob. Removing any additional edge will not make it so. So the maximum number of edges we can remove is 2.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/08/19/ex2.png
Input: n = 4, edges = [[3,1,2],[3,2,3],[1,1,4],[2,1,4]]
Output: 0
Explanation: Notice that removing any edge will not make the graph fully traversable by Alice and Bob.
Example 3:
Image: https://assets.leetcode.com/uploads/2020/08/19/ex3.png
Input: n = 4, edges = [[3,2,3],[1,1,2],[2,3,4]]
Output: -1
Explanation: In the current graph, Alice cannot reach node 4 from the other nodes. Likewise, Bob cannot reach 1. Therefore it's impossible to make the graph fully traversable.
Constraints:
•
1 <= n <= 10^5•
1 <= edges.length <= min(10^5, 3 * n * (n - 1) / 2)•
edges[i].length == 3•
1 <= type_i <= 3•
1 <= u_i < v_i <= n• All tuples
(type_i, u_i, v_i) are distinct.2024-07-01
1550. Three Consecutive Odds
Topic: Array
Difficulty: Easy
Problem:
Given an integer array
Example 1:
Example 2:
Constraints:
•
•
1550. Three Consecutive Odds
Topic: Array
Difficulty: Easy
Problem:
Given an integer array
arr, return true if there are three consecutive odd numbers in the array. Otherwise, return false.Example 1:
Input: arr = [2,6,4,1]
Output: false
Explanation: There are no three consecutive odds.
Example 2:
Input: arr = [1,2,34,3,4,5,7,23,12]
Output: true
Explanation: [5,7,23] are three consecutive odds.
Constraints:
•
1 <= arr.length <= 1000•
1 <= arr[i] <= 10002024-07-02
350. Intersection of Two Arrays II
Topic: Array, Hash Table, Two Pointers, Binary Search, Sorting
Difficulty: Easy
Problem:
Given two integer arrays
Example 1:
Example 2:
Constraints:
•
•
Follow up:
• What if the given array is already sorted? How would you optimize your algorithm?
• What if
• What if elements of
350. Intersection of Two Arrays II
Topic: Array, Hash Table, Two Pointers, Binary Search, Sorting
Difficulty: Easy
Problem:
Given two integer arrays
nums1 and nums2, return an array of their intersection. Each element in the result must appear as many times as it shows in both arrays and you may return the result in any order.Example 1:
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]
Example 2:
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [4,9]
Explanation: [9,4] is also accepted.
Constraints:
•
1 <= nums1.length, nums2.length <= 1000•
0 <= nums1[i], nums2[i] <= 1000Follow up:
• What if the given array is already sorted? How would you optimize your algorithm?
• What if
nums1's size is small compared to nums2's size? Which algorithm is better?• What if elements of
nums2 are stored on disk, and the memory is limited such that you cannot load all elements into the memory at once?2024-07-03
1509. Minimum Difference Between Largest and Smallest Value in Three Moves
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
You are given an integer array
In one move, you can choose one element of
Return the minimum difference between the largest and smallest value of
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1509. Minimum Difference Between Largest and Smallest Value in Three Moves
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
You are given an integer array
nums.In one move, you can choose one element of
nums and change it to any value.Return the minimum difference between the largest and smallest value of
nums after performing at most three moves.Example 1:
Input: nums = [5,3,2,4]
Output: 0
Explanation: We can make at most 3 moves.
In the first move, change 2 to 3. nums becomes [5,3,3,4].
In the second move, change 4 to 3. nums becomes [5,3,3,3].
In the third move, change 5 to 3. nums becomes [3,3,3,3].
After performing 3 moves, the difference between the minimum and maximum is 3 - 3 = 0.
Example 2:
Input: nums = [1,5,0,10,14]
Output: 1
Explanation: We can make at most 3 moves.
In the first move, change 5 to 0. nums becomes [1,0,0,10,14].
In the second move, change 10 to 0. nums becomes [1,0,0,0,14].
In the third move, change 14 to 1. nums becomes [1,0,0,0,1].
After performing 3 moves, the difference between the minimum and maximum is 1 - 0 = 1.
It can be shown that there is no way to make the difference 0 in 3 moves.
Example 3:
Input: nums = [3,100,20]
Output: 0
Explanation: We can make at most 3 moves.
In the first move, change 100 to 7. nums becomes [3,7,20].
In the second move, change 20 to 7. nums becomes [3,7,7].
In the third move, change 3 to 7. nums becomes [7,7,7].
After performing 3 moves, the difference between the minimum and maximum is 7 - 7 = 0.
Constraints:
•
1 <= nums.length <= 10^5•
-10^9 <= nums[i] <= 10^92024-07-04
2181. Merge Nodes in Between Zeros
Topic: Linked List, Simulation
Difficulty: Medium
Problem:
You are given the
For every two consecutive
Return the
Example 1:
Image: https://assets.leetcode.com/uploads/2022/02/02/ex1-1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2022/02/02/ex2-1.png
Constraints:
• The number of nodes in the list is in the range
•
• There are no two consecutive nodes with
• The beginning and end of the linked list have
2181. Merge Nodes in Between Zeros
Topic: Linked List, Simulation
Difficulty: Medium
Problem:
You are given the
head of a linked list, which contains a series of integers separated by 0's. The beginning and end of the linked list will have Node.val == 0.For every two consecutive
0's, merge all the nodes lying in between them into a single node whose value is the sum of all the merged nodes. The modified list should not contain any 0's.Return the
head of the modified linked list.Example 1:
Image: https://assets.leetcode.com/uploads/2022/02/02/ex1-1.png
Input: head = [0,3,1,0,4,5,2,0]
Output: [4,11]
Explanation:
The above figure represents the given linked list. The modified list contains
- The sum of the nodes marked in green: 3 + 1 = 4.
- The sum of the nodes marked in red: 4 + 5 + 2 = 11.
Example 2:
Image: https://assets.leetcode.com/uploads/2022/02/02/ex2-1.png
Input: head = [0,1,0,3,0,2,2,0]
Output: [1,3,4]
Explanation:
The above figure represents the given linked list. The modified list contains
- The sum of the nodes marked in green: 1 = 1.
- The sum of the nodes marked in red: 3 = 3.
- The sum of the nodes marked in yellow: 2 + 2 = 4.
Constraints:
• The number of nodes in the list is in the range
[3, 2 * 10^5].•
0 <= Node.val <= 1000• There are no two consecutive nodes with
Node.val == 0.• The beginning and end of the linked list have
Node.val == 0.2024-07-05
2058. Find the Minimum and Maximum Number of Nodes Between Critical Points
Topic: Linked List
Difficulty: Medium
Problem:
A critical point in a linked list is defined as either a local maxima or a local minima.
A node is a local maxima if the current node has a value strictly greater than the previous node and the next node.
A node is a local minima if the current node has a value strictly smaller than the previous node and the next node.
Note that a node can only be a local maxima/minima if there exists both a previous node and a next node.
Given a linked list
Example 1:
Image: https://assets.leetcode.com/uploads/2021/10/13/a1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2021/10/13/a2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2021/10/14/a5.png
Constraints:
• The number of nodes in the list is in the range
•
2058. Find the Minimum and Maximum Number of Nodes Between Critical Points
Topic: Linked List
Difficulty: Medium
Problem:
A critical point in a linked list is defined as either a local maxima or a local minima.
A node is a local maxima if the current node has a value strictly greater than the previous node and the next node.
A node is a local minima if the current node has a value strictly smaller than the previous node and the next node.
Note that a node can only be a local maxima/minima if there exists both a previous node and a next node.
Given a linked list
head, return an array of length 2 containing [minDistance, maxDistance] where minDistance is the minimum distance between any two distinct critical points and maxDistance is the maximum distance between any two distinct critical points. If there are fewer than two critical points, return [-1, -1].Example 1:
Image: https://assets.leetcode.com/uploads/2021/10/13/a1.png
Input: head = [3,1]
Output: [-1,-1]
Explanation: There are no critical points in [3,1].
Example 2:
Image: https://assets.leetcode.com/uploads/2021/10/13/a2.png
Input: head = [5,3,1,2,5,1,2]
Output: [1,3]
Explanation: There are three critical points:
- [5,3,1,2,5,1,2]: The third node is a local minima because 1 is less than 3 and 2.
- [5,3,1,2,5,1,2]: The fifth node is a local maxima because 5 is greater than 2 and 1.
- [5,3,1,2,5,1,2]: The sixth node is a local minima because 1 is less than 5 and 2.
The minimum distance is between the fifth and the sixth node. minDistance = 6 - 5 = 1.
The maximum distance is between the third and the sixth node. maxDistance = 6 - 3 = 3.
Example 3:
Image: https://assets.leetcode.com/uploads/2021/10/14/a5.png
Input: head = [1,3,2,2,3,2,2,2,7]
Output: [3,3]
Explanation: There are two critical points:
- [1,3,2,2,3,2,2,2,7]: The second node is a local maxima because 3 is greater than 1 and 2.
- [1,3,2,2,3,2,2,2,7]: The fifth node is a local maxima because 3 is greater than 2 and 2.
Both the minimum and maximum distances are between the second and the fifth node.
Thus, minDistance and maxDistance is 5 - 2 = 3.
Note that the last node is not considered a local maxima because it does not have a next node.
Constraints:
• The number of nodes in the list is in the range
[2, 10^5].•
1 <= Node.val <= 10^52024-07-06
2582. Pass the Pillow
Topic: Math, Simulation
Difficulty: Easy
Problem:
There are
• For example, once the pillow reaches the
Given the two positive integers
Example 1:
Example 2:
Constraints:
•
•
2582. Pass the Pillow
Topic: Math, Simulation
Difficulty: Easy
Problem:
There are
n people standing in a line labeled from 1 to n. The first person in the line is holding a pillow initially. Every second, the person holding the pillow passes it to the next person standing in the line. Once the pillow reaches the end of the line, the direction changes, and people continue passing the pillow in the opposite direction.• For example, once the pillow reaches the
n^th person they pass it to the n - 1^th person, then to the n - 2^th person and so on.Given the two positive integers
n and time, return the index of the person holding the pillow after time seconds.Example 1:
Input: n = 4, time = 5
Output: 2
Explanation: People pass the pillow in the following way: 1 -> 2 -> 3 -> 4 -> 3 -> 2.
After five seconds, the 2^nd person is holding the pillow.
Example 2:
Input: n = 3, time = 2
Output: 3
Explanation: People pass the pillow in the following way: 1 -> 2 -> 3.
After two seconds, the 3^r^d person is holding the pillow.
Constraints:
•
2 <= n <= 1000•
1 <= time <= 10002024-07-07
1518. Water Bottles
Topic: Math, Simulation
Difficulty: Easy
Problem:
There are
The operation of drinking a full water bottle turns it into an empty bottle.
Given the two integers
Example 1:
Image: https://assets.leetcode.com/uploads/2020/07/01/sample_1_1875.png
Example 2:
Image: https://assets.leetcode.com/uploads/2020/07/01/sample_2_1875.png
Constraints:
•
•
1518. Water Bottles
Topic: Math, Simulation
Difficulty: Easy
Problem:
There are
numBottles water bottles that are initially full of water. You can exchange numExchange empty water bottles from the market with one full water bottle.The operation of drinking a full water bottle turns it into an empty bottle.
Given the two integers
numBottles and numExchange, return the maximum number of water bottles you can drink.Example 1:
Image: https://assets.leetcode.com/uploads/2020/07/01/sample_1_1875.png
Input: numBottles = 9, numExchange = 3
Output: 13
Explanation: You can exchange 3 empty bottles to get 1 full water bottle.
Number of water bottles you can drink: 9 + 3 + 1 = 13.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/07/01/sample_2_1875.png
Input: numBottles = 15, numExchange = 4
Output: 19
Explanation: You can exchange 4 empty bottles to get 1 full water bottle.
Number of water bottles you can drink: 15 + 3 + 1 = 19.
Constraints:
•
1 <= numBottles <= 100•
2 <= numExchange <= 100