2022-12-24
790. Domino and Tromino Tiling
Topic: Dynamic Programming
Difficulty: Medium
Problem:
You have two types of tiles: a
Image: https://assets.leetcode.com/uploads/2021/07/15/lc-domino.jpg
Given an integer n, return the number of ways to tile an
In a tiling, every square must be covered by a tile. Two tilings are different if and only if there are two 4-directionally adjacent cells on the board such that exactly one of the tilings has both squares occupied by a tile.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/15/lc-domino1.jpg
Example 2:
Constraints:
•
790. Domino and Tromino Tiling
Topic: Dynamic Programming
Difficulty: Medium
Problem:
You have two types of tiles: a
2 x 1 domino shape and a tromino shape. You may rotate these shapes.Image: https://assets.leetcode.com/uploads/2021/07/15/lc-domino.jpg
Given an integer n, return the number of ways to tile an
2 x n board. Since the answer may be very large, return it modulo 10^9 + 7.In a tiling, every square must be covered by a tile. Two tilings are different if and only if there are two 4-directionally adjacent cells on the board such that exactly one of the tilings has both squares occupied by a tile.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/15/lc-domino1.jpg
Input: n = 3
Output: 5
Explanation: The five different ways are show above.
Example 2:
Input: n = 1
Output: 1
Constraints:
•
1 <= n <= 10002022-12-25
2389. Longest Subsequence With Limited Sum
Topic: Array, Binary Search, Greedy, Sorting, Prefix Sum
Difficulty: Easy
Problem:
You are given an integer array
Return an array
A subsequence is an array that can be derived from another array by deleting some or no elements without changing the order of the remaining elements.
Example 1:
Example 2:
Constraints:
•
•
•
•
2389. Longest Subsequence With Limited Sum
Topic: Array, Binary Search, Greedy, Sorting, Prefix Sum
Difficulty: Easy
Problem:
You are given an integer array
nums of length n, and an integer array queries of length m.Return an array
answer of length m where answer[i] is the maximum size of a subsequence that you can take from nums such that the sum of its elements is less than or equal to queries[i].A subsequence is an array that can be derived from another array by deleting some or no elements without changing the order of the remaining elements.
Example 1:
Input: nums = [4,5,2,1], queries = [3,10,21]
Output: [2,3,4]
Explanation: We answer the queries as follows:
- The subsequence [2,1] has a sum less than or equal to 3. It can be proven that 2 is the maximum size of such a subsequence, so answer[0] = 2.
- The subsequence [4,5,1] has a sum less than or equal to 10. It can be proven that 3 is the maximum size of such a subsequence, so answer[1] = 3.
- The subsequence [4,5,2,1] has a sum less than or equal to 21. It can be proven that 4 is the maximum size of such a subsequence, so answer[2] = 4.
Example 2:
Input: nums = [2,3,4,5], queries = [1]
Output: [0]
Explanation: The empty subsequence is the only subsequence that has a sum less than or equal to 1, so answer[0] = 0.
Constraints:
•
n == nums.length•
m == queries.length•
1 <= n, m <= 1000•
1 <= nums[i], queries[i] <= 10^62022-12-26
55. Jump Game
Topic: Array, Dynamic Programming, Greedy
Difficulty: Medium
Problem:
You are given an integer array
Return
Example 1:
Example 2:
Constraints:
•
•
55. Jump Game
Topic: Array, Dynamic Programming, Greedy
Difficulty: Medium
Problem:
You are given an integer array
nums. You are initially positioned at the array's first index, and each element in the array represents your maximum jump length at that position.Return
true if you can reach the last index, or false otherwise.Example 1:
Input: nums = [2,3,1,1,4]
Output: true
Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.
Example 2:
Input: nums = [3,2,1,0,4]
Output: false
Explanation: You will always arrive at index 3 no matter what. Its maximum jump length is 0, which makes it impossible to reach the last index.
Constraints:
•
1 <= nums.length <= 10^4•
0 <= nums[i] <= 10^52022-12-27
2279. Maximum Bags With Full Capacity of Rocks
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
You have
Return the maximum number of bags that could have full capacity after placing the additional rocks in some bags.
Example 1:
Example 2:
Constraints:
•
•
•
•
•
2279. Maximum Bags With Full Capacity of Rocks
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
You have
n bags numbered from 0 to n - 1. You are given two 0-indexed integer arrays capacity and rocks. The i^th bag can hold a maximum of capacity[i] rocks and currently contains rocks[i] rocks. You are also given an integer additionalRocks, the number of additional rocks you can place in any of the bags.Return the maximum number of bags that could have full capacity after placing the additional rocks in some bags.
Example 1:
Input: capacity = [2,3,4,5], rocks = [1,2,4,4], additionalRocks = 2
Output: 3
Explanation:
Place 1 rock in bag 0 and 1 rock in bag 1.
The number of rocks in each bag are now [2,3,4,4].
Bags 0, 1, and 2 have full capacity.
There are 3 bags at full capacity, so we return 3.
It can be shown that it is not possible to have more than 3 bags at full capacity.
Note that there may be other ways of placing the rocks that result in an answer of 3.
Example 2:
Input: capacity = [10,2,2], rocks = [2,2,0], additionalRocks = 100
Output: 3
Explanation:
Place 8 rocks in bag 0 and 2 rocks in bag 2.
The number of rocks in each bag are now [10,2,2].
Bags 0, 1, and 2 have full capacity.
There are 3 bags at full capacity, so we return 3.
It can be shown that it is not possible to have more than 3 bags at full capacity.
Note that we did not use all of the additional rocks.
Constraints:
•
n == capacity.length == rocks.length•
1 <= n <= 5 * 10^4•
1 <= capacity[i] <= 10^9•
0 <= rocks[i] <= capacity[i]•
1 <= additionalRocks <= 10^92022-12-28
1962. Remove Stones to Minimize the Total
Topic: Array, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
• Choose any
Notice that you can apply the operation on the same pile more than once.
Return the minimum possible total number of stones remaining after applying the
Example 1:
Example 2:
Constraints:
•
•
•
1962. Remove Stones to Minimize the Total
Topic: Array, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
piles, where piles[i] represents the number of stones in the i^th pile, and an integer k. You should apply the following operation exactly k times:• Choose any
piles[i] and remove floor(piles[i] / 2) stones from it.Notice that you can apply the operation on the same pile more than once.
Return the minimum possible total number of stones remaining after applying the
k operations.floor(x) is the greatest integer that is smaller than or equal to x (i.e., rounds x down).Example 1:
Input: piles = [5,4,9], k = 2
Output: 12
Explanation: Steps of a possible scenario are:
- Apply the operation on pile 2. The resulting piles are [5,4,5].
- Apply the operation on pile 0. The resulting piles are [3,4,5].
The total number of stones in [3,4,5] is 12.
Example 2:
Input: piles = [4,3,6,7], k = 3
Output: 12
Explanation: Steps of a possible scenario are:
- Apply the operation on pile 2. The resulting piles are [4,3,3,7].
- Apply the operation on pile 3. The resulting piles are [4,3,3,4].
- Apply the operation on pile 0. The resulting piles are [2,3,3,4].
The total number of stones in [2,3,3,4] is 12.
Constraints:
•
1 <= piles.length <= 10^5•
1 <= piles[i] <= 10^4•
1 <= k <= 10^52022-12-29
1834. Single-Threaded CPU
Topic: Array, Sorting, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given
You have a single-threaded CPU that can process at most one task at a time and will act in the following way:
• If the CPU is idle and there are no available tasks to process, the CPU remains idle.
• If the CPU is idle and there are available tasks, the CPU will choose the one with the shortest processing time. If multiple tasks have the same shortest processing time, it will choose the task with the smallest index.
• Once a task is started, the CPU will process the entire task without stopping.
• The CPU can finish a task then start a new one instantly.
Return the order in which the CPU will process the tasks.
Example 1:
Example 2:
Constraints:
•
•
•
1834. Single-Threaded CPU
Topic: Array, Sorting, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given
n tasks labeled from 0 to n - 1 represented by a 2D integer array tasks, where tasks[i] = [enqueueTime_i, processingTime_i] means that the i^th task will be available to process at enqueueTime_i and will take processingTime_i to finish processing.You have a single-threaded CPU that can process at most one task at a time and will act in the following way:
• If the CPU is idle and there are no available tasks to process, the CPU remains idle.
• If the CPU is idle and there are available tasks, the CPU will choose the one with the shortest processing time. If multiple tasks have the same shortest processing time, it will choose the task with the smallest index.
• Once a task is started, the CPU will process the entire task without stopping.
• The CPU can finish a task then start a new one instantly.
Return the order in which the CPU will process the tasks.
Example 1:
Input: tasks = [[1,2],[2,4],[3,2],[4,1]]
Output: [0,2,3,1]
Explanation: The events go as follows:
- At time = 1, task 0 is available to process. Available tasks = {0}.
- Also at time = 1, the idle CPU starts processing task 0. Available tasks = {}.
- At time = 2, task 1 is available to process. Available tasks = {1}.
- At time = 3, task 2 is available to process. Available tasks = {1, 2}.
- Also at time = 3, the CPU finishes task 0 and starts processing task 2 as it is the shortest. Available tasks = {1}.
- At time = 4, task 3 is available to process. Available tasks = {1, 3}.
- At time = 5, the CPU finishes task 2 and starts processing task 3 as it is the shortest. Available tasks = {1}.
- At time = 6, the CPU finishes task 3 and starts processing task 1. Available tasks = {}.
- At time = 10, the CPU finishes task 1 and becomes idle.
Example 2:
Input: tasks = [[7,10],[7,12],[7,5],[7,4],[7,2]]
Output: [4,3,2,0,1]
Explanation: The events go as follows:
- At time = 7, all the tasks become available. Available tasks = {0,1,2,3,4}.
- Also at time = 7, the idle CPU starts processing task 4. Available tasks = {0,1,2,3}.
- At time = 9, the CPU finishes task 4 and starts processing task 3. Available tasks = {0,1,2}.
- At time = 13, the CPU finishes task 3 and starts processing task 2. Available tasks = {0,1}.
- At time = 18, the CPU finishes task 2 and starts processing task 0. Available tasks = {1}.
- At time = 28, the CPU finishes task 0 and starts processing task 1. Available tasks = {}.
- At time = 40, the CPU finishes task 1 and becomes idle.
Constraints:
•
tasks.length == n•
1 <= n <= 10^5•
1 <= enqueueTime_i, processingTime_i <= 10^92022-12-30
797. All Paths From Source to Target
Topic: Backtracking, Depth-First Search, Breadth-First Search, Graph
Difficulty: Medium
Problem:
Given a directed acyclic graph (DAG) of
The graph is given as follows:
Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/28/all_1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/09/28/all_2.jpg
Constraints:
•
•
•
•
• All the elements of
• The input graph is guaranteed to be a DAG.
797. All Paths From Source to Target
Topic: Backtracking, Depth-First Search, Breadth-First Search, Graph
Difficulty: Medium
Problem:
Given a directed acyclic graph (DAG) of
n nodes labeled from 0 to n - 1, find all possible paths from node 0 to node n - 1 and return them in any order.The graph is given as follows:
graph[i] is a list of all nodes you can visit from node i (i.e., there is a directed edge from node i to node graph[i][j]).Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/28/all_1.jpg
Input: graph = [[1,2],[3],[3],[]]
Output: [[0,1,3],[0,2,3]]
Explanation: There are two paths: 0 -> 1 -> 3 and 0 -> 2 -> 3.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/09/28/all_2.jpg
Input: graph = [[4,3,1],[3,2,4],[3],[4],[]]
Output: [[0,4],[0,3,4],[0,1,3,4],[0,1,2,3,4],[0,1,4]]
Constraints:
•
n == graph.length•
2 <= n <= 15•
0 <= graph[i][j] < n•
graph[i][j] != i (i.e., there will be no self-loops).• All the elements of
graph[i] are unique.• The input graph is guaranteed to be a DAG.
2022-12-31
980. Unique Paths III
Topic: Array, Backtracking, Bit Manipulation, Matrix
Difficulty: Hard
Problem:
You are given an
•
•
•
•
Return the number of 4-directional walks from the starting square to the ending square, that walk over every non-obstacle square exactly once.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/02/lc-unique1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/08/02/lc-unique2.jpg
Example 3:
Image: https://assets.leetcode.com/uploads/2021/08/02/lc-unique3-.jpg
Constraints:
•
•
•
•
•
• There is exactly one starting cell and one ending cell.
980. Unique Paths III
Topic: Array, Backtracking, Bit Manipulation, Matrix
Difficulty: Hard
Problem:
You are given an
m x n integer array grid where grid[i][j] could be:•
1 representing the starting square. There is exactly one starting square.•
2 representing the ending square. There is exactly one ending square.•
0 representing empty squares we can walk over.•
-1 representing obstacles that we cannot walk over.Return the number of 4-directional walks from the starting square to the ending square, that walk over every non-obstacle square exactly once.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/02/lc-unique1.jpg
Input: grid = [[1,0,0,0],[0,0,0,0],[0,0,2,-1]]
Output: 2
Explanation: We have the following two paths:
1. (0,0),(0,1),(0,2),(0,3),(1,3),(1,2),(1,1),(1,0),(2,0),(2,1),(2,2)
2. (0,0),(1,0),(2,0),(2,1),(1,1),(0,1),(0,2),(0,3),(1,3),(1,2),(2,2)
Example 2:
Image: https://assets.leetcode.com/uploads/2021/08/02/lc-unique2.jpg
Input: grid = [[1,0,0,0],[0,0,0,0],[0,0,0,2]]
Output: 4
Explanation: We have the following four paths:
1. (0,0),(0,1),(0,2),(0,3),(1,3),(1,2),(1,1),(1,0),(2,0),(2,1),(2,2),(2,3)
2. (0,0),(0,1),(1,1),(1,0),(2,0),(2,1),(2,2),(1,2),(0,2),(0,3),(1,3),(2,3)
3. (0,0),(1,0),(2,0),(2,1),(2,2),(1,2),(1,1),(0,1),(0,2),(0,3),(1,3),(2,3)
4. (0,0),(1,0),(2,0),(2,1),(1,1),(0,1),(0,2),(0,3),(1,3),(1,2),(2,2),(2,3)
Example 3:
Image: https://assets.leetcode.com/uploads/2021/08/02/lc-unique3-.jpg
Input: grid = [[0,1],[2,0]]
Output: 0
Explanation: There is no path that walks over every empty square exactly once.
Note that the starting and ending square can be anywhere in the grid.
Constraints:
•
m == grid.length•
n == grid[i].length•
1 <= m, n <= 20•
1 <= m * n <= 20•
-1 <= grid[i][j] <= 2• There is exactly one starting cell and one ending cell.
2023-01-01
290. Word Pattern
Topic: Hash Table, String
Difficulty: Easy
Problem:
Given a
Here follow means a full match, such that there is a bijection between a letter in
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
•
• All the words in
290. Word Pattern
Topic: Hash Table, String
Difficulty: Easy
Problem:
Given a
pattern and a string s, find if s follows the same pattern.Here follow means a full match, such that there is a bijection between a letter in
pattern and a non-empty word in s.Example 1:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Example 2:
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
Example 3:
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
Constraints:
•
1 <= pattern.length <= 300•
pattern contains only lower-case English letters.•
1 <= s.length <= 3000•
s contains only lowercase English letters and spaces ' '.•
s does not contain any leading or trailing spaces.• All the words in
s are separated by a single space.2023-01-02
520. Detect Capital
Topic: String
Difficulty: Easy
Problem:
We define the usage of capitals in a word to be right when one of the following cases holds:
• All letters in this word are capitals, like
• All letters in this word are not capitals, like
• Only the first letter in this word is capital, like
Given a string
Example 1:
Example 2:
Constraints:
•
•
520. Detect Capital
Topic: String
Difficulty: Easy
Problem:
We define the usage of capitals in a word to be right when one of the following cases holds:
• All letters in this word are capitals, like
"USA".• All letters in this word are not capitals, like
"leetcode".• Only the first letter in this word is capital, like
"Google".Given a string
word, return true if the usage of capitals in it is right.Example 1:
Input: word = "USA"
Output: true
Example 2:
Input: word = "FlaG"
Output: false
Constraints:
•
1 <= word.length <= 100•
word consists of lowercase and uppercase English letters.2023-01-03
944. Delete Columns to Make Sorted
Topic: Array, String
Difficulty: Easy
Problem:
You are given an array of
The strings can be arranged such that there is one on each line, making a grid. For example,
You want to delete the columns that are not sorted lexicographically. In the above example (0-indexed), columns 0 (
Return the number of columns that you will delete.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
944. Delete Columns to Make Sorted
Topic: Array, String
Difficulty: Easy
Problem:
You are given an array of
n strings strs, all of the same length.The strings can be arranged such that there is one on each line, making a grid. For example,
strs = ["abc", "bce", "cae"] can be arranged as:abc
bce
cae
You want to delete the columns that are not sorted lexicographically. In the above example (0-indexed), columns 0 (
'a', 'b', 'c') and 2 ('c', 'e', 'e') are sorted while column 1 ('b', 'c', 'a') is not, so you would delete column 1.Return the number of columns that you will delete.
Example 1:
Input: strs = ["cba","daf","ghi"]
Output: 1
Explanation: The grid looks as follows:
cba
daf
ghi
Columns 0 and 2 are sorted, but column 1 is not, so you only need to delete 1 column.
Example 2:
Input: strs = ["a","b"]
Output: 0
Explanation: The grid looks as follows:
a
b
Column 0 is the only column and is sorted, so you will not delete any columns.
Example 3:
Input: strs = ["zyx","wvu","tsr"]
Output: 3
Explanation: The grid looks as follows:
zyx
wvu
tsr
All 3 columns are not sorted, so you will delete all 3.
Constraints:
•
n == strs.length•
1 <= n <= 100•
1 <= strs[i].length <= 1000•
strs[i] consists of lowercase English letters.2023-01-04
2244. Minimum Rounds to Complete All Tasks
Topic: Array, Hash Table, Greedy, Counting
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
Return the minimum rounds required to complete all the tasks, or
Example 1:
Example 2:
Constraints:
•
•
2244. Minimum Rounds to Complete All Tasks
Topic: Array, Hash Table, Greedy, Counting
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
tasks, where tasks[i] represents the difficulty level of a task. In each round, you can complete either 2 or 3 tasks of the same difficulty level.Return the minimum rounds required to complete all the tasks, or
-1 if it is not possible to complete all the tasks.Example 1:
Input: tasks = [2,2,3,3,2,4,4,4,4,4]
Output: 4
Explanation: To complete all the tasks, a possible plan is:
- In the first round, you complete 3 tasks of difficulty level 2.
- In the second round, you complete 2 tasks of difficulty level 3.
- In the third round, you complete 3 tasks of difficulty level 4.
- In the fourth round, you complete 2 tasks of difficulty level 4.
It can be shown that all the tasks cannot be completed in fewer than 4 rounds, so the answer is 4.
Example 2:
Input: tasks = [2,3,3]
Output: -1
Explanation: There is only 1 task of difficulty level 2, but in each round, you can only complete either 2 or 3 tasks of the same difficulty level. Hence, you cannot complete all the tasks, and the answer is -1.
Constraints:
•
1 <= tasks.length <= 10^5•
1 <= tasks[i] <= 10^92023-01-05
452. Minimum Number of Arrows to Burst Balloons
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
There are some spherical balloons taped onto a flat wall that represents the XY-plane. The balloons are represented as a 2D integer array
Arrows can be shot up directly vertically (in the positive y-direction) from different points along the x-axis. A balloon with
Given the array
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
452. Minimum Number of Arrows to Burst Balloons
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
There are some spherical balloons taped onto a flat wall that represents the XY-plane. The balloons are represented as a 2D integer array
points where points[i] = [x_start, x_end] denotes a balloon whose horizontal diameter stretches between x_start and x_end. You do not know the exact y-coordinates of the balloons.Arrows can be shot up directly vertically (in the positive y-direction) from different points along the x-axis. A balloon with
x_start and x_end is burst by an arrow shot at x if x_start <= x <= x_end. There is no limit to the number of arrows that can be shot. A shot arrow keeps traveling up infinitely, bursting any balloons in its path.Given the array
points, return the minimum number of arrows that must be shot to burst all balloons.Example 1:
Input: points = [[10,16],[2,8],[1,6],[7,12]]
Output: 2
Explanation: The balloons can be burst by 2 arrows:
- Shoot an arrow at x = 6, bursting the balloons [2,8] and [1,6].
- Shoot an arrow at x = 11, bursting the balloons [10,16] and [7,12].
Example 2:
Input: points = [[1,2],[3,4],[5,6],[7,8]]
Output: 4
Explanation: One arrow needs to be shot for each balloon for a total of 4 arrows.
Example 3:
Input: points = [[1,2],[2,3],[3,4],[4,5]]
Output: 2
Explanation: The balloons can be burst by 2 arrows:
- Shoot an arrow at x = 2, bursting the balloons [1,2] and [2,3].
- Shoot an arrow at x = 4, bursting the balloons [3,4] and [4,5].
Constraints:
•
1 <= points.length <= 10^5•
points[i].length == 2•
-2^31 <= x_start < x_end <= 2^31 - 12023-01-06
1833. Maximum Ice Cream Bars
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
It is a sweltering summer day, and a boy wants to buy some ice cream bars.
At the store, there are
Return the maximum number of ice cream bars the boy can buy with
Note: The boy can buy the ice cream bars in any order.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
1833. Maximum Ice Cream Bars
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
It is a sweltering summer day, and a boy wants to buy some ice cream bars.
At the store, there are
n ice cream bars. You are given an array costs of length n, where costs[i] is the price of the i^th ice cream bar in coins. The boy initially has coins coins to spend, and he wants to buy as many ice cream bars as possible. Return the maximum number of ice cream bars the boy can buy with
coins coins.Note: The boy can buy the ice cream bars in any order.
Example 1:
Input: costs = [1,3,2,4,1], coins = 7
Output: 4
Explanation: The boy can buy ice cream bars at indices 0,1,2,4 for a total price of 1 + 3 + 2 + 1 = 7.
Example 2:
Input: costs = [10,6,8,7,7,8], coins = 5
Output: 0
Explanation: The boy cannot afford any of the ice cream bars.
Example 3:
Input: costs = [1,6,3,1,2,5], coins = 20
Output: 6
Explanation: The boy can buy all the ice cream bars for a total price of 1 + 6 + 3 + 1 + 2 + 5 = 18.
Constraints:
•
costs.length == n•
1 <= n <= 10^5•
1 <= costs[i] <= 10^5•
1 <= coins <= 10^82023-01-07
134. Gas Station
Topic: Array, Greedy
Difficulty: Medium
Problem:
There are
You have a car with an unlimited gas tank and it costs
Given two integer arrays
Example 1:
Example 2:
Constraints:
•
•
•
134. Gas Station
Topic: Array, Greedy
Difficulty: Medium
Problem:
There are
n gas stations along a circular route, where the amount of gas at the i^th station is gas[i].You have a car with an unlimited gas tank and it costs
cost[i] of gas to travel from the i^th station to its next (i + 1)^th station. You begin the journey with an empty tank at one of the gas stations.Given two integer arrays
gas and cost, return the starting gas station's index if you can travel around the circuit once in the clockwise direction, otherwise return -1. If there exists a solution, it is guaranteed to be uniqueExample 1:
Input: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
Output: 3
Explanation:
Start at station 3 (index 3) and fill up with 4 unit of gas. Your tank = 0 + 4 = 4
Travel to station 4. Your tank = 4 - 1 + 5 = 8
Travel to station 0. Your tank = 8 - 2 + 1 = 7
Travel to station 1. Your tank = 7 - 3 + 2 = 6
Travel to station 2. Your tank = 6 - 4 + 3 = 5
Travel to station 3. The cost is 5. Your gas is just enough to travel back to station 3.
Therefore, return 3 as the starting index.
Example 2:
Input: gas = [2,3,4], cost = [3,4,3]
Output: -1
Explanation:
You can't start at station 0 or 1, as there is not enough gas to travel to the next station.
Let's start at station 2 and fill up with 4 unit of gas. Your tank = 0 + 4 = 4
Travel to station 0. Your tank = 4 - 3 + 2 = 3
Travel to station 1. Your tank = 3 - 3 + 3 = 3
You cannot travel back to station 2, as it requires 4 unit of gas but you only have 3.
Therefore, you can't travel around the circuit once no matter where you start.
Constraints:
•
n == gas.length == cost.length•
1 <= n <= 10^5•
0 <= gas[i], cost[i] <= 10^42023-01-08
149. Max Points on a Line
Topic: Array, Hash Table, Math, Geometry
Difficulty: Hard
Problem:
Given an array of
Example 1:
Image: https://assets.leetcode.com/uploads/2021/02/25/plane1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/02/25/plane2.jpg
Constraints:
•
•
•
• All the
149. Max Points on a Line
Topic: Array, Hash Table, Math, Geometry
Difficulty: Hard
Problem:
Given an array of
points where points[i] = [x_i, y_i] represents a point on the X-Y plane, return the maximum number of points that lie on the same straight line.Example 1:
Image: https://assets.leetcode.com/uploads/2021/02/25/plane1.jpg
Input: points = [[1,1],[2,2],[3,3]]
Output: 3
Example 2:
Image: https://assets.leetcode.com/uploads/2021/02/25/plane2.jpg
Input: points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
Output: 4
Constraints:
•
1 <= points.length <= 300•
points[i].length == 2•
-10^4 <= x_i, y_i <= 10^4• All the
points are unique.2023-01-09
144. Binary Tree Preorder Traversal
Topic: Stack, Tree, Depth-First Search, Binary Tree
Difficulty: Easy
Problem:
Given the
Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/15/inorder_1.jpg
Example 2:
Example 3:
Constraints:
• The number of nodes in the tree is in the range
•
Follow up: Recursive solution is trivial, could you do it iteratively?
144. Binary Tree Preorder Traversal
Topic: Stack, Tree, Depth-First Search, Binary Tree
Difficulty: Easy
Problem:
Given the
root of a binary tree, return the preorder traversal of its nodes' values.Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/15/inorder_1.jpg
Input: root = [1,null,2,3]
Output: [1,2,3]
Example 2:
Input: root = []
Output: []
Example 3:
Input: root = [1]
Output: [1]
Constraints:
• The number of nodes in the tree is in the range
[0, 100].•
-100 <= Node.val <= 100Follow up: Recursive solution is trivial, could you do it iteratively?
2023-01-10
100. Same Tree
Topic: Tree, Depth-First Search, Breadth-First Search, Binary Tree
Difficulty: Easy
Problem:
Given the roots of two binary trees
Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/12/20/ex1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/12/20/ex2.jpg
Example 3:
Image: https://assets.leetcode.com/uploads/2020/12/20/ex3.jpg
Constraints:
• The number of nodes in both trees is in the range
•
100. Same Tree
Topic: Tree, Depth-First Search, Breadth-First Search, Binary Tree
Difficulty: Easy
Problem:
Given the roots of two binary trees
p and q, write a function to check if they are the same or not.Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/12/20/ex1.jpg
Input: p = [1,2,3], q = [1,2,3]
Output: true
Example 2:
Image: https://assets.leetcode.com/uploads/2020/12/20/ex2.jpg
Input: p = [1,2], q = [1,null,2]
Output: false
Example 3:
Image: https://assets.leetcode.com/uploads/2020/12/20/ex3.jpg
Input: p = [1,2,1], q = [1,1,2]
Output: false
Constraints:
• The number of nodes in both trees is in the range
[0, 100].•
-10^4 <= Node.val <= 10^42023-01-11
1443. Minimum Time to Collect All Apples in a Tree
Topic: Hash Table, Tree, Depth-First Search, Breadth-First Search
Difficulty: Medium
Problem:
Given an undirected tree consisting of
The edges of the undirected tree are given in the array
Example 1:
Image: https://assets.leetcode.com/uploads/2020/04/23/min_time_collect_apple_1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2020/04/23/min_time_collect_apple_2.png
Example 3:
Constraints:
•
•
•
•
•
•
1443. Minimum Time to Collect All Apples in a Tree
Topic: Hash Table, Tree, Depth-First Search, Breadth-First Search
Difficulty: Medium
Problem:
Given an undirected tree consisting of
n vertices numbered from 0 to n-1, which has some apples in their vertices. You spend 1 second to walk over one edge of the tree. Return the minimum time in seconds you have to spend to collect all apples in the tree, starting at vertex 0 and coming back to this vertex.The edges of the undirected tree are given in the array
edges, where edges[i] = [a_i, b_i] means that exists an edge connecting the vertices a_i and b_i. Additionally, there is a boolean array hasApple, where hasApple[i] = true means that vertex i has an apple; otherwise, it does not have any apple.Example 1:
Image: https://assets.leetcode.com/uploads/2020/04/23/min_time_collect_apple_1.png
Input: n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], hasApple = [false,false,true,false,true,true,false]
Output: 8
Explanation: The figure above represents the given tree where red vertices have an apple. One optimal path to collect all apples is shown by the green arrows.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/04/23/min_time_collect_apple_2.png
Input: n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], hasApple = [false,false,true,false,false,true,false]
Output: 6
Explanation: The figure above represents the given tree where red vertices have an apple. One optimal path to collect all apples is shown by the green arrows.
Example 3:
Input: n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], hasApple = [false,false,false,false,false,false,false]
Output: 0
Constraints:
•
1 <= n <= 10^5•
edges.length == n - 1•
edges[i].length == 2•
0 <= a_i < b_i <= n - 1•
from_i < to_i•
hasApple.length == n2023-01-12
1519. Number of Nodes in the Sub-Tree With the Same Label
Topic: Hash Table, Tree, Depth-First Search, Breadth-First Search, Counting
Difficulty: Medium
Problem:
You are given a tree (i.e. a connected, undirected graph that has no cycles) consisting of
The
Return an array of size
A subtree of a tree
Example 1:
Image: https://assets.leetcode.com/uploads/2020/07/01/q3e1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/07/01/q3e2.jpg
Example 3:
Image: https://assets.leetcode.com/uploads/2020/07/01/q3e3.jpg
Constraints:
•
•
•
•
•
•
•
1519. Number of Nodes in the Sub-Tree With the Same Label
Topic: Hash Table, Tree, Depth-First Search, Breadth-First Search, Counting
Difficulty: Medium
Problem:
You are given a tree (i.e. a connected, undirected graph that has no cycles) consisting of
n nodes numbered from 0 to n - 1 and exactly n - 1 edges. The root of the tree is the node 0, and each node of the tree has a label which is a lower-case character given in the string labels (i.e. The node with the number i has the label labels[i]).The
edges array is given on the form edges[i] = [a_i, b_i], which means there is an edge between nodes a_i and b_i in the tree.Return an array of size
n where ans[i] is the number of nodes in the subtree of the i^th node which have the same label as node i.A subtree of a tree
T is the tree consisting of a node in T and all of its descendant nodes.Example 1:
Image: https://assets.leetcode.com/uploads/2020/07/01/q3e1.jpg
Input: n = 7, edges = [[0,1],[0,2],[1,4],[1,5],[2,3],[2,6]], labels = "abaedcd"
Output: [2,1,1,1,1,1,1]
Explanation: Node 0 has label 'a' and its sub-tree has node 2 with label 'a' as well, thus the answer is 2. Notice that any node is part of its sub-tree.
Node 1 has a label 'b'. The sub-tree of node 1 contains nodes 1,4 and 5, as nodes 4 and 5 have different labels than node 1, the answer is just 1 (the node itself).
Example 2:
Image: https://assets.leetcode.com/uploads/2020/07/01/q3e2.jpg
Input: n = 4, edges = [[0,1],[1,2],[0,3]], labels = "bbbb"
Output: [4,2,1,1]
Explanation: The sub-tree of node 2 contains only node 2, so the answer is 1.
The sub-tree of node 3 contains only node 3, so the answer is 1.
The sub-tree of node 1 contains nodes 1 and 2, both have label 'b', thus the answer is 2.
The sub-tree of node 0 contains nodes 0, 1, 2 and 3, all with label 'b', thus the answer is 4.
Example 3:
Image: https://assets.leetcode.com/uploads/2020/07/01/q3e3.jpg
Input: n = 5, edges = [[0,1],[0,2],[1,3],[0,4]], labels = "aabab"
Output: [3,2,1,1,1]
Constraints:
•
1 <= n <= 10^5•
edges.length == n - 1•
edges[i].length == 2•
0 <= a_i, b_i < n•
a_i != b_i•
labels.length == n•
labels is consisting of only of lowercase English letters.2023-01-13
2246. Longest Path With Different Adjacent Characters
Topic: Array, String, Tree, Depth-First Search, Graph, Topological Sort
Difficulty: Hard
Problem:
You are given a tree (i.e. a connected, undirected graph that has no cycles) rooted at node
You are also given a string
Return the length of the longest path in the tree such that no pair of adjacent nodes on the path have the same character assigned to them.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/03/25/testingdrawio.png
Example 2:
Image: https://assets.leetcode.com/uploads/2022/03/25/graph2drawio.png
Constraints:
•
•
•
•
•
•
2246. Longest Path With Different Adjacent Characters
Topic: Array, String, Tree, Depth-First Search, Graph, Topological Sort
Difficulty: Hard
Problem:
You are given a tree (i.e. a connected, undirected graph that has no cycles) rooted at node
0 consisting of n nodes numbered from 0 to n - 1. The tree is represented by a 0-indexed array parent of size n, where parent[i] is the parent of node i. Since node 0 is the root, parent[0] == -1.You are also given a string
s of length n, where s[i] is the character assigned to node i.Return the length of the longest path in the tree such that no pair of adjacent nodes on the path have the same character assigned to them.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/03/25/testingdrawio.png
Input: parent = [-1,0,0,1,1,2], s = "abacbe"
Output: 3
Explanation: The longest path where each two adjacent nodes have different characters in the tree is the path: 0 -> 1 -> 3. The length of this path is 3, so 3 is returned.
It can be proven that there is no longer path that satisfies the conditions.
Example 2:
Image: https://assets.leetcode.com/uploads/2022/03/25/graph2drawio.png
Input: parent = [-1,0,0,0], s = "aabc"
Output: 3
Explanation: The longest path where each two adjacent nodes have different characters is the path: 2 -> 0 -> 3. The length of this path is 3, so 3 is returned.
Constraints:
•
n == parent.length == s.length•
1 <= n <= 10^5•
0 <= parent[i] <= n - 1 for all i >= 1•
parent[0] == -1•
parent represents a valid tree.•
s consists of only lowercase English letters.