2024-08-19
650. 2 Keys Keyboard
Topic: Math, Dynamic Programming
Difficulty: Medium
Problem:
There is only one character
• Copy All: You can copy all the characters present on the screen (a partial copy is not allowed).
• Paste: You can paste the characters which are copied last time.
Given an integer
Example 1:
Example 2:
Constraints:
•
650. 2 Keys Keyboard
Topic: Math, Dynamic Programming
Difficulty: Medium
Problem:
There is only one character
'A' on the screen of a notepad. You can perform one of two operations on this notepad for each step:• Copy All: You can copy all the characters present on the screen (a partial copy is not allowed).
• Paste: You can paste the characters which are copied last time.
Given an integer
n, return the minimum number of operations to get the character 'A' exactly n times on the screen.Example 1:
Input: n = 3
Output: 3
Explanation: Initially, we have one character 'A'.
In step 1, we use Copy All operation.
In step 2, we use Paste operation to get 'AA'.
In step 3, we use Paste operation to get 'AAA'.
Example 2:
Input: n = 1
Output: 0
Constraints:
•
1 <= n <= 10002024-08-20
1140. Stone Game II
Topic: Array, Math, Dynamic Programming, Prefix Sum, Game Theory
Difficulty: Medium
Problem:
Alice and Bob continue their games with piles of stones. There are a number of piles arranged in a row, and each pile has a positive integer number of stones
Alice and Bob take turns, with Alice starting first. Initially,
On each player's turn, that player can take all the stones in the first
The game continues until all the stones have been taken.
Assuming Alice and Bob play optimally, return the maximum number of stones Alice can get.
Example 1:
Example 2:
Constraints:
•
•
1140. Stone Game II
Topic: Array, Math, Dynamic Programming, Prefix Sum, Game Theory
Difficulty: Medium
Problem:
Alice and Bob continue their games with piles of stones. There are a number of piles arranged in a row, and each pile has a positive integer number of stones
piles[i]. The objective of the game is to end with the most stones. Alice and Bob take turns, with Alice starting first. Initially,
M = 1.On each player's turn, that player can take all the stones in the first
X remaining piles, where 1 <= X <= 2M. Then, we set M = max(M, X).The game continues until all the stones have been taken.
Assuming Alice and Bob play optimally, return the maximum number of stones Alice can get.
Example 1:
Input: piles = [2,7,9,4,4]
Output: 10
Explanation: If Alice takes one pile at the beginning, Bob takes two piles, then Alice takes 2 piles again. Alice can get 2 + 4 + 4 = 10 piles in total. If Alice takes two piles at the beginning, then Bob can take all three piles left. In this case, Alice get 2 + 7 = 9 piles in total. So we return 10 since it's larger.
Example 2:
Input: piles = [1,2,3,4,5,100]
Output: 104
Constraints:
•
1 <= piles.length <= 100•
1 <= piles[i] <= 10^42024-08-21
664. Strange Printer
Topic: String, Dynamic Programming
Difficulty: Hard
Problem:
There is a strange printer with the following two special properties:
• The printer can only print a sequence of the same character each time.
• At each turn, the printer can print new characters starting from and ending at any place and will cover the original existing characters.
Given a string
Example 1:
Example 2:
Constraints:
•
•
664. Strange Printer
Topic: String, Dynamic Programming
Difficulty: Hard
Problem:
There is a strange printer with the following two special properties:
• The printer can only print a sequence of the same character each time.
• At each turn, the printer can print new characters starting from and ending at any place and will cover the original existing characters.
Given a string
s, return the minimum number of turns the printer needed to print it.Example 1:
Input: s = "aaabbb"
Output: 2
Explanation: Print "aaa" first and then print "bbb".
Example 2:
Input: s = "aba"
Output: 2
Explanation: Print "aaa" first and then print "b" from the second place of the string, which will cover the existing character 'a'.
Constraints:
•
1 <= s.length <= 100•
s consists of lowercase English letters.2024-08-22
476. Number Complement
Topic: Bit Manipulation
Difficulty: Easy
Problem:
The complement of an integer is the integer you get when you flip all the
• For example, The integer
Given an integer
Example 1:
Example 2:
Constraints:
•
Note: This question is the same as 1009: <https://leetcode.com/problems/complement-of-base-10-integer/>
476. Number Complement
Topic: Bit Manipulation
Difficulty: Easy
Problem:
The complement of an integer is the integer you get when you flip all the
0's to 1's and all the 1's to 0's in its binary representation.• For example, The integer
5 is "101" in binary and its complement is "010" which is the integer 2.Given an integer
num, return its complement.Example 1:
Input: num = 5
Output: 2
Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
Example 2:
Input: num = 1
Output: 0
Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.
Constraints:
•
1 <= num < 2^31Note: This question is the same as 1009: <https://leetcode.com/problems/complement-of-base-10-integer/>
2024-08-23
592. Fraction Addition and Subtraction
Topic: Math, String, Simulation
Difficulty: Medium
Problem:
Given a string
The final result should be an irreducible fraction. If your final result is an integer, change it to the format of a fraction that has a denominator
Example 1:
Example 2:
Example 3:
Constraints:
• The input string only contains
• Each fraction (input and output) has the format
• The input only contains valid irreducible fractions, where the numerator and denominator of each fraction will always be in the range
• The number of given fractions will be in the range
• The numerator and denominator of the final result are guaranteed to be valid and in the range of 32-bit int.
592. Fraction Addition and Subtraction
Topic: Math, String, Simulation
Difficulty: Medium
Problem:
Given a string
expression representing an expression of fraction addition and subtraction, return the calculation result in string format.The final result should be an irreducible fraction. If your final result is an integer, change it to the format of a fraction that has a denominator
1. So in this case, 2 should be converted to 2/1.Example 1:
Input: expression = "-1/2+1/2"
Output: "0/1"
Example 2:
Input: expression = "-1/2+1/2+1/3"
Output: "1/3"
Example 3:
Input: expression = "1/3-1/2"
Output: "-1/6"
Constraints:
• The input string only contains
'0' to '9', '/', '+' and '-'. So does the output.• Each fraction (input and output) has the format
±numerator/denominator. If the first input fraction or the output is positive, then '+' will be omitted.• The input only contains valid irreducible fractions, where the numerator and denominator of each fraction will always be in the range
[1, 10]. If the denominator is 1, it means this fraction is actually an integer in a fraction format defined above.• The number of given fractions will be in the range
[1, 10].• The numerator and denominator of the final result are guaranteed to be valid and in the range of 32-bit int.
2024-08-24
564. Find the Closest Palindrome
Topic: Math, String
Difficulty: Hard
Problem:
Given a string
The closest is defined as the absolute difference minimized between two integers.
Example 1:
Example 2:
Constraints:
•
•
•
•
564. Find the Closest Palindrome
Topic: Math, String
Difficulty: Hard
Problem:
Given a string
n representing an integer, return the closest integer (not including itself), which is a palindrome. If there is a tie, return the smaller one.The closest is defined as the absolute difference minimized between two integers.
Example 1:
Input: n = "123"
Output: "121"
Example 2:
Input: n = "1"
Output: "0"
Explanation: 0 and 2 are the closest palindromes but we return the smallest which is 0.
Constraints:
•
1 <= n.length <= 18•
n consists of only digits.•
n does not have leading zeros.•
n is representing an integer in the range [1, 10^18 - 1].2024-08-25
145. Binary Tree Postorder Traversal
Topic: Stack, Tree, Depth-First Search, Binary Tree
Difficulty: Easy
Problem:
Given the
Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/28/pre1.jpg
Example 2:
Example 3:
Constraints:
• The number of the nodes in the tree is in the range
•
Follow up: Recursive solution is trivial, could you do it iteratively?
145. Binary Tree Postorder Traversal
Topic: Stack, Tree, Depth-First Search, Binary Tree
Difficulty: Easy
Problem:
Given the
root of a binary tree, return the postorder traversal of its nodes' values.Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/28/pre1.jpg
Input: root = [1,null,2,3]
Output: [3,2,1]
Example 2:
Input: root = []
Output: []
Example 3:
Input: root = [1]
Output: [1]
Constraints:
• The number of the nodes in the tree is in the range
[0, 100].•
-100 <= Node.val <= 100Follow up: Recursive solution is trivial, could you do it iteratively?
2024-08-26
590. N-ary Tree Postorder Traversal
Topic: Stack, Tree, Depth-First Search
Difficulty: Easy
Problem:
Given the
Nary-Tree input serialization is represented in their level order traversal. Each group of children is separated by the null value (See examples)
Example 1:
Image: https://assets.leetcode.com/uploads/2018/10/12/narytreeexample.png
Example 2:
Image: https://assets.leetcode.com/uploads/2019/11/08/sample_4_964.png
Constraints:
• The number of nodes in the tree is in the range
•
• The height of the n-ary tree is less than or equal to
Follow up: Recursive solution is trivial, could you do it iteratively?
590. N-ary Tree Postorder Traversal
Topic: Stack, Tree, Depth-First Search
Difficulty: Easy
Problem:
Given the
root of an n-ary tree, return the postorder traversal of its nodes' values.Nary-Tree input serialization is represented in their level order traversal. Each group of children is separated by the null value (See examples)
Example 1:
Image: https://assets.leetcode.com/uploads/2018/10/12/narytreeexample.png
Input: root = [1,null,3,2,4,null,5,6]
Output: [5,6,3,2,4,1]
Example 2:
Image: https://assets.leetcode.com/uploads/2019/11/08/sample_4_964.png
Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: [2,6,14,11,7,3,12,8,4,13,9,10,5,1]
Constraints:
• The number of nodes in the tree is in the range
[0, 10^4].•
0 <= Node.val <= 10^4• The height of the n-ary tree is less than or equal to
1000.Follow up: Recursive solution is trivial, could you do it iteratively?
2024-08-27
1514. Path with Maximum Probability
Topic: Array, Graph, Heap (Priority Queue), Shortest Path
Difficulty: Medium
Problem:
You are given an undirected weighted graph of
Given two nodes
If there is no path from
Example 1:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex3.png
Constraints:
•
•
•
•
•
•
•
• There is at most one edge between every two nodes.
1514. Path with Maximum Probability
Topic: Array, Graph, Heap (Priority Queue), Shortest Path
Difficulty: Medium
Problem:
You are given an undirected weighted graph of
n nodes (0-indexed), represented by an edge list where edges[i] = [a, b] is an undirected edge connecting the nodes a and b with a probability of success of traversing that edge succProb[i].Given two nodes
start and end, find the path with the maximum probability of success to go from start to end and return its success probability.If there is no path from
start to end, return 0. Your answer will be accepted if it differs from the correct answer by at most 1e-5.Example 1:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex1.png
Input: n = 3, edges = [[0,1],[1,2],[0,2]], succProb = [0.5,0.5,0.2], start = 0, end = 2
Output: 0.25000
Explanation: There are two paths from start to end, one having a probability of success = 0.2 and the other has 0.5 * 0.5 = 0.25.
Example 2:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex2.png
Input: n = 3, edges = [[0,1],[1,2],[0,2]], succProb = [0.5,0.5,0.3], start = 0, end = 2
Output: 0.30000
Example 3:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex3.png
Input: n = 3, edges = [[0,1]], succProb = [0.5], start = 0, end = 2
Output: 0.00000
Explanation: There is no path between 0 and 2.
Constraints:
•
2 <= n <= 10^4•
0 <= start, end < n•
start != end•
0 <= a, b < n•
a != b•
0 <= succProb.length == edges.length <= 2*10^4•
0 <= succProb[i] <= 1• There is at most one edge between every two nodes.
2024-08-28
1905. Count Sub Islands
Topic: Array, Depth-First Search, Breadth-First Search, Union Find, Matrix
Difficulty: Medium
Problem:
You are given two
An island in
Return the number of islands in
Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/10/test1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/03/testcasex2.png
Constraints:
•
•
•
•
1905. Count Sub Islands
Topic: Array, Depth-First Search, Breadth-First Search, Union Find, Matrix
Difficulty: Medium
Problem:
You are given two
m x n binary matrices grid1 and grid2 containing only 0's (representing water) and 1's (representing land). An island is a group of 1's connected 4-directionally (horizontal or vertical). Any cells outside of the grid are considered water cells.An island in
grid2 is considered a sub-island if there is an island in grid1 that contains all the cells that make up this island in grid2.Return the number of islands in
grid2 that are considered sub-islands.Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/10/test1.png
Input: grid1 = [[1,1,1,0,0],[0,1,1,1,1],[0,0,0,0,0],[1,0,0,0,0],[1,1,0,1,1]], grid2 = [[1,1,1,0,0],[0,0,1,1,1],[0,1,0,0,0],[1,0,1,1,0],[0,1,0,1,0]]
Output: 3
Explanation: In the picture above, the grid on the left is grid1 and the grid on the right is grid2.
The 1s colored red in grid2 are those considered to be part of a sub-island. There are three sub-islands.
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/03/testcasex2.png
Input: grid1 = [[1,0,1,0,1],[1,1,1,1,1],[0,0,0,0,0],[1,1,1,1,1],[1,0,1,0,1]], grid2 = [[0,0,0,0,0],[1,1,1,1,1],[0,1,0,1,0],[0,1,0,1,0],[1,0,0,0,1]]
Output: 2
Explanation: In the picture above, the grid on the left is grid1 and the grid on the right is grid2.
The 1s colored red in grid2 are those considered to be part of a sub-island. There are two sub-islands.
Constraints:
•
m == grid1.length == grid2.length•
n == grid1[i].length == grid2[i].length•
1 <= m, n <= 500•
grid1[i][j] and grid2[i][j] are either 0 or 1.2024-08-29
947. Most Stones Removed with Same Row or Column
Topic: Hash Table, Depth-First Search, Union Find, Graph
Difficulty: Medium
Problem:
On a 2D plane, we place
A stone can be removed if it shares either the same row or the same column as another stone that has not been removed.
Given an array
Example 1:
Example 2:
Example 3:
Constraints:
•
•
• No two stones are at the same coordinate point.
947. Most Stones Removed with Same Row or Column
Topic: Hash Table, Depth-First Search, Union Find, Graph
Difficulty: Medium
Problem:
On a 2D plane, we place
n stones at some integer coordinate points. Each coordinate point may have at most one stone.A stone can be removed if it shares either the same row or the same column as another stone that has not been removed.
Given an array
stones of length n where stones[i] = [x_i, y_i] represents the location of the i^th stone, return the largest possible number of stones that can be removed.Example 1:
Input: stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]
Output: 5
Explanation: One way to remove 5 stones is as follows:
1. Remove stone [2,2] because it shares the same row as [2,1].
2. Remove stone [2,1] because it shares the same column as [0,1].
3. Remove stone [1,2] because it shares the same row as [1,0].
4. Remove stone [1,0] because it shares the same column as [0,0].
5. Remove stone [0,1] because it shares the same row as [0,0].
Stone [0,0] cannot be removed since it does not share a row/column with another stone still on the plane.
Example 2:
Input: stones = [[0,0],[0,2],[1,1],[2,0],[2,2]]
Output: 3
Explanation: One way to make 3 moves is as follows:
1. Remove stone [2,2] because it shares the same row as [2,0].
2. Remove stone [2,0] because it shares the same column as [0,0].
3. Remove stone [0,2] because it shares the same row as [0,0].
Stones [0,0] and [1,1] cannot be removed since they do not share a row/column with another stone still on the plane.
Example 3:
Input: stones = [[0,0]]
Output: 0
Explanation: [0,0] is the only stone on the plane, so you cannot remove it.
Constraints:
•
1 <= stones.length <= 1000•
0 <= x_i, y_i <= 10^4• No two stones are at the same coordinate point.
2024-08-30
2699. Modify Graph Edge Weights
Topic: Graph, Heap (Priority Queue), Shortest Path
Difficulty: Hard
Problem:
You are given an undirected weighted connected graph containing
Some edges have a weight of
Your task is to modify all edges with a weight of
Return an array containing all edges (even unmodified ones) in any order if it is possible to make the shortest distance from
Note: You are not allowed to modify the weights of edges with initial positive weights.
Example 1:
Image: https://assets.leetcode.com/uploads/2023/04/18/graph.png
Example 2:
Image: https://assets.leetcode.com/uploads/2023/04/18/graph-2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2023/04/19/graph-3.png
Constraints:
•
•
•
•
•
•
•
•
•
• The graph is connected, and there are no self-loops or repeated edges
2699. Modify Graph Edge Weights
Topic: Graph, Heap (Priority Queue), Shortest Path
Difficulty: Hard
Problem:
You are given an undirected weighted connected graph containing
n nodes labeled from 0 to n - 1, and an integer array edges where edges[i] = [a_i, b_i, w_i] indicates that there is an edge between nodes a_i and b_i with weight w_i.Some edges have a weight of
-1 (w_i = -1), while others have a positive weight (w_i > 0).Your task is to modify all edges with a weight of
-1 by assigning them positive integer values in the range [1, 2 * 10^9] so that the shortest distance between the nodes source and destination becomes equal to an integer target. If there are multiple modifications that make the shortest distance between source and destination equal to target, any of them will be considered correct.Return an array containing all edges (even unmodified ones) in any order if it is possible to make the shortest distance from
source to destination equal to target, or an empty array if it's impossible.Note: You are not allowed to modify the weights of edges with initial positive weights.
Example 1:
Image: https://assets.leetcode.com/uploads/2023/04/18/graph.png
Input: n = 5, edges = [[4,1,-1],[2,0,-1],[0,3,-1],[4,3,-1]], source = 0, destination = 1, target = 5
Output: [[4,1,1],[2,0,1],[0,3,3],[4,3,1]]
Explanation: The graph above shows a possible modification to the edges, making the distance from 0 to 1 equal to 5.
Example 2:
Image: https://assets.leetcode.com/uploads/2023/04/18/graph-2.png
Input: n = 3, edges = [[0,1,-1],[0,2,5]], source = 0, destination = 2, target = 6
Output: []
Explanation: The graph above contains the initial edges. It is not possible to make the distance from 0 to 2 equal to 6 by modifying the edge with weight -1. So, an empty array is returned.
Example 3:
Image: https://assets.leetcode.com/uploads/2023/04/19/graph-3.png
Input: n = 4, edges = [[1,0,4],[1,2,3],[2,3,5],[0,3,-1]], source = 0, destination = 2, target = 6
Output: [[1,0,4],[1,2,3],[2,3,5],[0,3,1]]
Explanation: The graph above shows a modified graph having the shortest distance from 0 to 2 as 6.
Constraints:
•
1 <= n <= 100•
1 <= edges.length <= n * (n - 1) / 2•
edges[i].length == 3•
0 <= a_i, b_i < n•
w_i = -1or 1 <= w_i <= 10^7•
a_i != b_i•
0 <= source, destination < n•
source != destination•
1 <= target <= 10^9• The graph is connected, and there are no self-loops or repeated edges
2024-08-31
1514. Path with Maximum Probability
Topic: Array, Graph, Heap (Priority Queue), Shortest Path
Difficulty: Medium
Problem:
You are given an undirected weighted graph of
Given two nodes
If there is no path from
Example 1:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex3.png
Constraints:
•
•
•
•
•
•
•
• There is at most one edge between every two nodes.
1514. Path with Maximum Probability
Topic: Array, Graph, Heap (Priority Queue), Shortest Path
Difficulty: Medium
Problem:
You are given an undirected weighted graph of
n nodes (0-indexed), represented by an edge list where edges[i] = [a, b] is an undirected edge connecting the nodes a and b with a probability of success of traversing that edge succProb[i].Given two nodes
start and end, find the path with the maximum probability of success to go from start to end and return its success probability.If there is no path from
start to end, return 0. Your answer will be accepted if it differs from the correct answer by at most 1e-5.Example 1:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex1.png
Input: n = 3, edges = [[0,1],[1,2],[0,2]], succProb = [0.5,0.5,0.2], start = 0, end = 2
Output: 0.25000
Explanation: There are two paths from start to end, one having a probability of success = 0.2 and the other has 0.5 * 0.5 = 0.25.
Example 2:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex2.png
Input: n = 3, edges = [[0,1],[1,2],[0,2]], succProb = [0.5,0.5,0.3], start = 0, end = 2
Output: 0.30000
Example 3:
Image: https://assets.leetcode.com/uploads/2019/09/20/1558_ex3.png
Input: n = 3, edges = [[0,1]], succProb = [0.5], start = 0, end = 2
Output: 0.00000
Explanation: There is no path between 0 and 2.
Constraints:
•
2 <= n <= 10^4•
0 <= start, end < n•
start != end•
0 <= a, b < n•
a != b•
0 <= succProb.length == edges.length <= 2*10^4•
0 <= succProb[i] <= 1• There is at most one edge between every two nodes.
2024-09-01
2022. Convert 1D Array Into 2D Array
Topic: Array, Matrix, Simulation
Difficulty: Easy
Problem:
You are given a 0-indexed 1-dimensional (1D) integer array
The elements from indices
Return an
Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/26/image-20210826114243-1.png
Example 2:
Example 3:
Constraints:
•
•
•
2022. Convert 1D Array Into 2D Array
Topic: Array, Matrix, Simulation
Difficulty: Easy
Problem:
You are given a 0-indexed 1-dimensional (1D) integer array
original, and two integers, m and n. You are tasked with creating a 2-dimensional (2D) array with m rows and n columns using all the elements from original.The elements from indices
0 to n - 1 (inclusive) of original should form the first row of the constructed 2D array, the elements from indices n to 2 * n - 1 (inclusive) should form the second row of the constructed 2D array, and so on.Return an
m x n 2D array constructed according to the above procedure, or an empty 2D array if it is impossible.Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/26/image-20210826114243-1.png
Input: original = [1,2,3,4], m = 2, n = 2
Output: [[1,2],[3,4]]
Explanation: The constructed 2D array should contain 2 rows and 2 columns.
The first group of n=2 elements in original, [1,2], becomes the first row in the constructed 2D array.
The second group of n=2 elements in original, [3,4], becomes the second row in the constructed 2D array.
Example 2:
Input: original = [1,2,3], m = 1, n = 3
Output: [[1,2,3]]
Explanation: The constructed 2D array should contain 1 row and 3 columns.
Put all three elements in original into the first row of the constructed 2D array.
Example 3:
Input: original = [1,2], m = 1, n = 1
Output: []
Explanation: There are 2 elements in original.
It is impossible to fit 2 elements in a 1x1 2D array, so return an empty 2D array.
Constraints:
•
1 <= original.length <= 5 * 10^4•
1 <= original[i] <= 10^5•
1 <= m, n <= 4 * 10^42024-09-02
1894. Find the Student that Will Replace the Chalk
Topic: Array, Binary Search, Simulation, Prefix Sum
Difficulty: Medium
Problem:
There are
You are given a 0-indexed integer array
Return the index of the student that will replace the chalk pieces.
Example 1:
Example 2:
Constraints:
•
•
•
•
1894. Find the Student that Will Replace the Chalk
Topic: Array, Binary Search, Simulation, Prefix Sum
Difficulty: Medium
Problem:
There are
n students in a class numbered from 0 to n - 1. The teacher will give each student a problem starting with the student number 0, then the student number 1, and so on until the teacher reaches the student number n - 1. After that, the teacher will restart the process, starting with the student number 0 again.You are given a 0-indexed integer array
chalk and an integer k. There are initially k pieces of chalk. When the student number i is given a problem to solve, they will use chalk[i] pieces of chalk to solve that problem. However, if the current number of chalk pieces is strictly less than chalk[i], then the student number i will be asked to replace the chalk.Return the index of the student that will replace the chalk pieces.
Example 1:
Input: chalk = [5,1,5], k = 22
Output: 0
Explanation: The students go in turns as follows:
- Student number 0 uses 5 chalk, so k = 17.
- Student number 1 uses 1 chalk, so k = 16.
- Student number 2 uses 5 chalk, so k = 11.
- Student number 0 uses 5 chalk, so k = 6.
- Student number 1 uses 1 chalk, so k = 5.
- Student number 2 uses 5 chalk, so k = 0.
Student number 0 does not have enough chalk, so they will have to replace it.
Example 2:
Input: chalk = [3,4,1,2], k = 25
Output: 1
Explanation: The students go in turns as follows:
- Student number 0 uses 3 chalk so k = 22.
- Student number 1 uses 4 chalk so k = 18.
- Student number 2 uses 1 chalk so k = 17.
- Student number 3 uses 2 chalk so k = 15.
- Student number 0 uses 3 chalk so k = 12.
- Student number 1 uses 4 chalk so k = 8.
- Student number 2 uses 1 chalk so k = 7.
- Student number 3 uses 2 chalk so k = 5.
- Student number 0 uses 3 chalk so k = 2.
Student number 1 does not have enough chalk, so they will have to replace it.
Constraints:
•
chalk.length == n•
1 <= n <= 10^5•
1 <= chalk[i] <= 10^5•
1 <= k <= 10^92024-09-03
1945. Sum of Digits of String After Convert
Topic: String, Simulation
Difficulty: Easy
Problem:
You are given a string
First, convert
For example, if
• Convert:
• Transform #1:
• Transform #2:
Return the resulting integer after performing the operations described above.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1945. Sum of Digits of String After Convert
Topic: String, Simulation
Difficulty: Easy
Problem:
You are given a string
s consisting of lowercase English letters, and an integer k.First, convert
s into an integer by replacing each letter with its position in the alphabet (i.e., replace 'a' with 1, 'b' with 2, ..., 'z' with 26). Then, transform the integer by replacing it with the sum of its digits. Repeat the transform operation k times in total.For example, if
s = "zbax" and k = 2, then the resulting integer would be 8 by the following operations:• Convert:
"zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124• Transform #1:
262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17• Transform #2:
17 ➝ 1 + 7 ➝ 8Return the resulting integer after performing the operations described above.
Example 1:
Input: s = "iiii", k = 1
Output: 36
Explanation: The operations are as follows:
- Convert: "iiii" ➝ "(9)(9)(9)(9)" ➝ "9999" ➝ 9999
- Transform #1: 9999 ➝ 9 + 9 + 9 + 9 ➝ 36
Thus the resulting integer is 36.
Example 2:
Input: s = "leetcode", k = 2
Output: 6
Explanation: The operations are as follows:
- Convert: "leetcode" ➝ "(12)(5)(5)(20)(3)(15)(4)(5)" ➝ "12552031545" ➝ 12552031545
- Transform #1: 12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
- Transform #2: 33 ➝ 3 + 3 ➝ 6
Thus the resulting integer is 6.
Example 3:
Input: s = "zbax", k = 2
Output: 8
Constraints:
•
1 <= s.length <= 100•
1 <= k <= 10•
s consists of lowercase English letters.2024-09-04
874. Walking Robot Simulation
Topic: Array, Hash Table, Simulation
Difficulty: Medium
Problem:
A robot on an infinite XY-plane starts at point
•
•
•
Some of the grid squares are
Return the maximum Euclidean distance that the robot ever gets from the origin squared (i.e. if the distance is
Note:
• North means +Y direction.
• East means +X direction.
• South means -Y direction.
• West means -X direction.
• There can be obstacle in 0,0.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
• The answer is guaranteed to be less than
874. Walking Robot Simulation
Topic: Array, Hash Table, Simulation
Difficulty: Medium
Problem:
A robot on an infinite XY-plane starts at point
(0, 0) facing north. The robot can receive a sequence of these three possible types of commands:•
-2: Turn left 90 degrees.•
-1: Turn right 90 degrees.•
1 <= k <= 9: Move forward k units, one unit at a time.Some of the grid squares are
obstacles. The i^th obstacle is at grid point obstacles[i] = (x_i, y_i). If the robot runs into an obstacle, then it will instead stay in its current location and move on to the next command.Return the maximum Euclidean distance that the robot ever gets from the origin squared (i.e. if the distance is
5, return 25).Note:
• North means +Y direction.
• East means +X direction.
• South means -Y direction.
• West means -X direction.
• There can be obstacle in 0,0.
Example 1:
Input: commands = [4,-1,3], obstacles = []
Output: 25
Explanation: The robot starts at (0, 0):
1. Move north 4 units to (0, 4).
2. Turn right.
3. Move east 3 units to (3, 4).
The furthest point the robot ever gets from the origin is (3, 4), which squared is 3^2 + 4^2 = 25 units away.
Example 2:
Input: commands = [4,-1,4,-2,4], obstacles = [[2,4]]
Output: 65
Explanation: The robot starts at (0, 0):
1. Move north 4 units to (0, 4).
2. Turn right.
3. Move east 1 unit and get blocked by the obstacle at (2, 4), robot is at (1, 4).
4. Turn left.
5. Move north 4 units to (1, 8).
The furthest point the robot ever gets from the origin is (1, 8), which squared is 1^2 + 8^2 = 65 units away.
Example 3:
Input: commands = [6,-1,-1,6], obstacles = []
Output: 36
Explanation: The robot starts at (0, 0):
1. Move north 6 units to (0, 6).
2. Turn right.
3. Turn right.
4. Move south 6 units to (0, 0).
The furthest point the robot ever gets from the origin is (0, 6), which squared is 6^2 = 36 units away.
Constraints:
•
1 <= commands.length <= 10^4•
commands[i] is either -2, -1, or an integer in the range [1, 9].•
0 <= obstacles.length <= 10^4•
-3 * 10^4 <= x_i, y_i <= 3 * 10^4• The answer is guaranteed to be less than
2^31.2024-09-05
2028. Find Missing Observations
Topic: Array, Math, Simulation
Difficulty: Medium
Problem:
You have observations of
You are given an integer array
Return an array of length
The average value of a set of
Note that
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
2028. Find Missing Observations
Topic: Array, Math, Simulation
Difficulty: Medium
Problem:
You have observations of
n + m 6-sided dice rolls with each face numbered from 1 to 6. n of the observations went missing, and you only have the observations of m rolls. Fortunately, you have also calculated the average value of the n + m rolls.You are given an integer array
rolls of length m where rolls[i] is the value of the i^th observation. You are also given the two integers mean and n.Return an array of length
n containing the missing observations such that the average value of the n + m rolls is exactly mean. If there are multiple valid answers, return any of them. If no such array exists, return an empty array.The average value of a set of
k numbers is the sum of the numbers divided by k.Note that
mean is an integer, so the sum of the n + m rolls should be divisible by n + m.Example 1:
Input: rolls = [3,2,4,3], mean = 4, n = 2
Output: [6,6]
Explanation: The mean of all n + m rolls is (3 + 2 + 4 + 3 + 6 + 6) / 6 = 4.
Example 2:
Input: rolls = [1,5,6], mean = 3, n = 4
Output: [2,3,2,2]
Explanation: The mean of all n + m rolls is (1 + 5 + 6 + 2 + 3 + 2 + 2) / 7 = 3.
Example 3:
Input: rolls = [1,2,3,4], mean = 6, n = 4
Output: []
Explanation: It is impossible for the mean to be 6 no matter what the 4 missing rolls are.
Constraints:
•
m == rolls.length•
1 <= n, m <= 10^5•
1 <= rolls[i], mean <= 62024-09-06
3217. Delete Nodes From Linked List Present in Array
Topic: Array, Hash Table, Linked List
Difficulty: Medium
Problem:
You are given an array of integers
Example 1:
Input: nums = 1,2,3, head = 1,2,3,4,5
Output: 4,5
Explanation:
Image: https://assets.leetcode.com/uploads/2024/06/11/linkedlistexample0.png
Remove the nodes with values 1, 2, and 3.
Example 2:
Input: nums = 1, head = 1,2,1,2,1,2
Output: 2,2,2
Explanation:
Image: https://assets.leetcode.com/uploads/2024/06/11/linkedlistexample1.png
Remove the nodes with value 1.
Example 3:
Input: nums = 5, head = 1,2,3,4
Output: 1,2,3,4
Explanation:
Image: https://assets.leetcode.com/uploads/2024/06/11/linkedlistexample2.png
No node has value 5.
Constraints:
•
•
• All elements in
• The number of nodes in the given list is in the range
•
• The input is generated such that there is at least one node in the linked list that has a value not present in
3217. Delete Nodes From Linked List Present in Array
Topic: Array, Hash Table, Linked List
Difficulty: Medium
Problem:
You are given an array of integers
nums and the head of a linked list. Return the head of the modified linked list after removing all nodes from the linked list that have a value that exists in nums.Example 1:
Input: nums = 1,2,3, head = 1,2,3,4,5
Output: 4,5
Explanation:
Image: https://assets.leetcode.com/uploads/2024/06/11/linkedlistexample0.png
Remove the nodes with values 1, 2, and 3.
Example 2:
Input: nums = 1, head = 1,2,1,2,1,2
Output: 2,2,2
Explanation:
Image: https://assets.leetcode.com/uploads/2024/06/11/linkedlistexample1.png
Remove the nodes with value 1.
Example 3:
Input: nums = 5, head = 1,2,3,4
Output: 1,2,3,4
Explanation:
Image: https://assets.leetcode.com/uploads/2024/06/11/linkedlistexample2.png
No node has value 5.
Constraints:
•
1 <= nums.length <= 10^5•
1 <= nums[i] <= 10^5• All elements in
nums are unique.• The number of nodes in the given list is in the range
[1, 10^5].•
1 <= Node.val <= 10^5• The input is generated such that there is at least one node in the linked list that has a value not present in
nums.2024-09-07
1367. Linked List in Binary Tree
Topic: Linked List, Tree, Depth-First Search, Breadth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given a binary tree
Return True if all the elements in the linked list starting from the
In this context downward path means a path that starts at some node and goes downwards.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/02/12/sample_1_1720.png
Example 2:
Image: https://assets.leetcode.com/uploads/2020/02/12/sample_2_1720.png
Example 3:
Constraints:
• The number of nodes in the tree will be in the range
• The number of nodes in the list will be in the range
•
1367. Linked List in Binary Tree
Topic: Linked List, Tree, Depth-First Search, Breadth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given a binary tree
root and a linked list with head as the first node. Return True if all the elements in the linked list starting from the
head correspond to some downward path connected in the binary tree otherwise return False.In this context downward path means a path that starts at some node and goes downwards.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/02/12/sample_1_1720.png
Input: head = [4,2,8], root = [1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
Output: true
Explanation: Nodes in blue form a subpath in the binary Tree.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/02/12/sample_2_1720.png
Input: head = [1,4,2,6], root = [1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
Output: true
Example 3:
Input: head = [1,4,2,6,8], root = [1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
Output: false
Explanation: There is no path in the binary tree that contains all the elements of the linked list from head.
Constraints:
• The number of nodes in the tree will be in the range
[1, 2500].• The number of nodes in the list will be in the range
[1, 100].•
1 <= Node.val <= 100 for each node in the linked list and binary tree.2024-09-08
725. Split Linked List in Parts
Topic: Linked List
Difficulty: Medium
Problem:
Given the
The length of each part should be as equal as possible: no two parts should have a size differing by more than one. This may lead to some parts being null.
The parts should be in the order of occurrence in the input list, and parts occurring earlier should always have a size greater than or equal to parts occurring later.
Return an array of the
Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/13/split1-lc.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/13/split2-lc.jpg
Constraints:
• The number of nodes in the list is in the range
•
•
725. Split Linked List in Parts
Topic: Linked List
Difficulty: Medium
Problem:
Given the
head of a singly linked list and an integer k, split the linked list into k consecutive linked list parts.The length of each part should be as equal as possible: no two parts should have a size differing by more than one. This may lead to some parts being null.
The parts should be in the order of occurrence in the input list, and parts occurring earlier should always have a size greater than or equal to parts occurring later.
Return an array of the
k parts.Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/13/split1-lc.jpg
Input: head = [1,2,3], k = 5
Output: [[1],[2],[3],[],[]]
Explanation:
The first element output[0] has output[0].val = 1, output[0].next = null.
The last element output[4] is null, but its string representation as a ListNode is [].
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/13/split2-lc.jpg
Input: head = [1,2,3,4,5,6,7,8,9,10], k = 3
Output: [[1,2,3,4],[5,6,7],[8,9,10]]
Explanation:
The input has been split into consecutive parts with size difference at most 1, and earlier parts are a larger size than the later parts.
Constraints:
• The number of nodes in the list is in the range
[0, 1000].•
0 <= Node.val <= 1000•
1 <= k <= 50