2024-04-18
463. Island Perimeter
Topic: Array, Depth-First Search, Breadth-First Search, Matrix
Difficulty: Easy
Problem:
You are given
Grid cells are connected horizontally/vertically (not diagonally). The
The island doesn't have "lakes", meaning the water inside isn't connected to the water around the island. One cell is a square with side length 1. The grid is rectangular, width and height don't exceed 100. Determine the perimeter of the island.
Example 1:
Image: https://assets.leetcode.com/uploads/2018/10/12/island.png
Example 2:
Example 3:
Constraints:
•
•
•
•
• There is exactly one island in
463. Island Perimeter
Topic: Array, Depth-First Search, Breadth-First Search, Matrix
Difficulty: Easy
Problem:
You are given
row x col grid representing a map where grid[i][j] = 1 represents land and grid[i][j] = 0 represents water.Grid cells are connected horizontally/vertically (not diagonally). The
grid is completely surrounded by water, and there is exactly one island (i.e., one or more connected land cells).The island doesn't have "lakes", meaning the water inside isn't connected to the water around the island. One cell is a square with side length 1. The grid is rectangular, width and height don't exceed 100. Determine the perimeter of the island.
Example 1:
Image: https://assets.leetcode.com/uploads/2018/10/12/island.png
Input: grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
Output: 16
Explanation: The perimeter is the 16 yellow stripes in the image above.
Example 2:
Input: grid = [[1]]
Output: 4
Example 3:
Input: grid = [[1,0]]
Output: 4
Constraints:
•
row == grid.length•
col == grid[i].length•
1 <= row, col <= 100•
grid[i][j] is 0 or 1.• There is exactly one island in
grid.2024-04-19
200. Number of Islands
Topic: Array, Depth-First Search, Breadth-First Search, Union Find, Matrix
Difficulty: Medium
Problem:
Given an
An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
Example 1:
Example 2:
Constraints:
•
•
•
•
200. Number of Islands
Topic: Array, Depth-First Search, Breadth-First Search, Union Find, Matrix
Difficulty: Medium
Problem:
Given an
m x n 2D binary grid grid which represents a map of '1's (land) and '0's (water), return the number of islands.An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
Example 1:
Input: grid = [
["1","1","1","1","0"],
["1","1","0","1","0"],
["1","1","0","0","0"],
["0","0","0","0","0"]
]
Output: 1
Example 2:
Input: grid = [
["1","1","0","0","0"],
["1","1","0","0","0"],
["0","0","1","0","0"],
["0","0","0","1","1"]
]
Output: 3
Constraints:
•
m == grid.length•
n == grid[i].length•
1 <= m, n <= 300•
grid[i][j] is '0' or '1'.2024-04-20
1992. Find All Groups of Farmland
Topic: Array, Depth-First Search, Breadth-First Search, Matrix
Difficulty: Medium
Problem:
You are given a 0-indexed
To keep the land organized, there are designated rectangular areas of hectares that consist entirely of farmland. These rectangular areas are called groups. No two groups are adjacent, meaning farmland in one group is not four-directionally adjacent to another farmland in a different group.
Return a 2D array containing the 4-length arrays described above for each group of farmland in
Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/27/screenshot-2021-07-27-at-12-23-15-copy-of-diagram-drawio-diagrams-net.png
Example 2:
Image: https://assets.leetcode.com/uploads/2021/07/27/screenshot-2021-07-27-at-12-30-26-copy-of-diagram-drawio-diagrams-net.png
Example 3:
Image: https://assets.leetcode.com/uploads/2021/07/27/screenshot-2021-07-27-at-12-32-24-copy-of-diagram-drawio-diagrams-net.png
Constraints:
•
•
•
•
• Groups of farmland are rectangular in shape.
1992. Find All Groups of Farmland
Topic: Array, Depth-First Search, Breadth-First Search, Matrix
Difficulty: Medium
Problem:
You are given a 0-indexed
m x n binary matrix land where a 0 represents a hectare of forested land and a 1 represents a hectare of farmland.To keep the land organized, there are designated rectangular areas of hectares that consist entirely of farmland. These rectangular areas are called groups. No two groups are adjacent, meaning farmland in one group is not four-directionally adjacent to another farmland in a different group.
land can be represented by a coordinate system where the top left corner of land is (0, 0) and the bottom right corner of land is (m-1, n-1). Find the coordinates of the top left and bottom right corner of each group of farmland. A group of farmland with a top left corner at (r_1, c_1) and a bottom right corner at (r_2, c_2) is represented by the 4-length array [r_1, c_1, r_2, c_2].Return a 2D array containing the 4-length arrays described above for each group of farmland in
land. If there are no groups of farmland, return an empty array. You may return the answer in any order.Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/27/screenshot-2021-07-27-at-12-23-15-copy-of-diagram-drawio-diagrams-net.png
Input: land = [[1,0,0],[0,1,1],[0,1,1]]
Output: [[0,0,0,0],[1,1,2,2]]
Explanation:
The first group has a top left corner at land[0][0] and a bottom right corner at land[0][0].
The second group has a top left corner at land[1][1] and a bottom right corner at land[2][2].
Example 2:
Image: https://assets.leetcode.com/uploads/2021/07/27/screenshot-2021-07-27-at-12-30-26-copy-of-diagram-drawio-diagrams-net.png
Input: land = [[1,1],[1,1]]
Output: [[0,0,1,1]]
Explanation:
The first group has a top left corner at land[0][0] and a bottom right corner at land[1][1].
Example 3:
Image: https://assets.leetcode.com/uploads/2021/07/27/screenshot-2021-07-27-at-12-32-24-copy-of-diagram-drawio-diagrams-net.png
Input: land = [[0]]
Output: []
Explanation:
There are no groups of farmland.
Constraints:
•
m == land.length•
n == land[i].length•
1 <= m, n <= 300•
land consists of only 0's and 1's.• Groups of farmland are rectangular in shape.
2024-04-21
1971. Find if Path Exists in Graph
Topic: Depth-First Search, Breadth-First Search, Union Find, Graph
Difficulty: Easy
Problem:
There is a bi-directional graph with
You want to determine if there is a valid path that exists from vertex
Given
Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/14/validpath-ex1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2021/08/14/validpath-ex2.png
Constraints:
•
•
•
•
•
•
• There are no duplicate edges.
• There are no self edges.
1971. Find if Path Exists in Graph
Topic: Depth-First Search, Breadth-First Search, Union Find, Graph
Difficulty: Easy
Problem:
There is a bi-directional graph with
n vertices, where each vertex is labeled from 0 to n - 1 (inclusive). The edges in the graph are represented as a 2D integer array edges, where each edges[i] = [u_i, v_i] denotes a bi-directional edge between vertex u_i and vertex v_i. Every vertex pair is connected by at most one edge, and no vertex has an edge to itself.You want to determine if there is a valid path that exists from vertex
source to vertex destination.Given
edges and the integers n, source, and destination, return true if there is a valid path from source to destination, or false otherwise.Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/14/validpath-ex1.png
Input: n = 3, edges = [[0,1],[1,2],[2,0]], source = 0, destination = 2
Output: true
Explanation: There are two paths from vertex 0 to vertex 2:
- 0 → 1 → 2
- 0 → 2
Example 2:
Image: https://assets.leetcode.com/uploads/2021/08/14/validpath-ex2.png
Input: n = 6, edges = [[0,1],[0,2],[3,5],[5,4],[4,3]], source = 0, destination = 5
Output: false
Explanation: There is no path from vertex 0 to vertex 5.
Constraints:
•
1 <= n <= 2 * 10^5•
0 <= edges.length <= 2 * 10^5•
edges[i].length == 2•
0 <= u_i, v_i <= n - 1•
u_i != v_i•
0 <= source, destination <= n - 1• There are no duplicate edges.
• There are no self edges.
2024-04-22
752. Open the Lock
Topic: Array, Hash Table, String, Breadth-First Search
Difficulty: Medium
Problem:
You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots:
The lock initially starts at
You are given a list of
Given a
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
• target will not be in the list
•
752. Open the Lock
Topic: Array, Hash Table, String, Breadth-First Search
Difficulty: Medium
Problem:
You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots:
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'. The wheels can rotate freely and wrap around: for example we can turn '9' to be '0', or '0' to be '9'. Each move consists of turning one wheel one slot.The lock initially starts at
'0000', a string representing the state of the 4 wheels.You are given a list of
deadends dead ends, meaning if the lock displays any of these codes, the wheels of the lock will stop turning and you will be unable to open it.Given a
target representing the value of the wheels that will unlock the lock, return the minimum total number of turns required to open the lock, or -1 if it is impossible.Example 1:
Input: deadends = ["0201","0101","0102","1212","2002"], target = "0202"
Output: 6
Explanation:
A sequence of valid moves would be "0000" -> "1000" -> "1100" -> "1200" -> "1201" -> "1202" -> "0202".
Note that a sequence like "0000" -> "0001" -> "0002" -> "0102" -> "0202" would be invalid,
because the wheels of the lock become stuck after the display becomes the dead end "0102".
Example 2:
Input: deadends = ["8888"], target = "0009"
Output: 1
Explanation: We can turn the last wheel in reverse to move from "0000" -> "0009".
Example 3:
Input: deadends = ["8887","8889","8878","8898","8788","8988","7888","9888"], target = "8888"
Output: -1
Explanation: We cannot reach the target without getting stuck.
Constraints:
•
1 <= deadends.length <= 500•
deadends[i].length == 4•
target.length == 4• target will not be in the list
deadends.•
target and deadends[i] consist of digits only.2024-04-23
310. Minimum Height Trees
Topic: Depth-First Search, Breadth-First Search, Graph, Topological Sort
Difficulty: Medium
Problem:
A tree is an undirected graph in which any two vertices are connected by exactly one path. In other words, any connected graph without simple cycles is a tree.
Given a tree of
Return a list of all MHTs' root labels. You can return the answer in any order.
The height of a rooted tree is the number of edges on the longest downward path between the root and a leaf.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/01/e1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/09/01/e2.jpg
Constraints:
•
•
•
•
• All the pairs
• The given input is guaranteed to be a tree and there will be no repeated edges.
310. Minimum Height Trees
Topic: Depth-First Search, Breadth-First Search, Graph, Topological Sort
Difficulty: Medium
Problem:
A tree is an undirected graph in which any two vertices are connected by exactly one path. In other words, any connected graph without simple cycles is a tree.
Given a tree of
n nodes labelled from 0 to n - 1, and an array of n - 1 edges where edges[i] = [a_i, b_i] indicates that there is an undirected edge between the two nodes a_i and b_i in the tree, you can choose any node of the tree as the root. When you select a node x as the root, the result tree has height h. Among all possible rooted trees, those with minimum height (i.e. min(h)) are called minimum height trees (MHTs).Return a list of all MHTs' root labels. You can return the answer in any order.
The height of a rooted tree is the number of edges on the longest downward path between the root and a leaf.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/01/e1.jpg
Input: n = 4, edges = [[1,0],[1,2],[1,3]]
Output: [1]
Explanation: As shown, the height of the tree is 1 when the root is the node with label 1 which is the only MHT.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/09/01/e2.jpg
Input: n = 6, edges = [[3,0],[3,1],[3,2],[3,4],[5,4]]
Output: [3,4]
Constraints:
•
1 <= n <= 2 * 10^4•
edges.length == n - 1•
0 <= a_i, b_i < n•
a_i != b_i• All the pairs
(a_i, b_i) are distinct.• The given input is guaranteed to be a tree and there will be no repeated edges.
2024-04-25
2370. Longest Ideal Subsequence
Topic: Hash Table, String, Dynamic Programming
Difficulty: Medium
Problem:
You are given a string
•
• The absolute difference in the alphabet order of every two adjacent letters in
Return the length of the longest ideal string.
A subsequence is a string that can be derived from another string by deleting some or no characters without changing the order of the remaining characters.
Note that the alphabet order is not cyclic. For example, the absolute difference in the alphabet order of
Example 1:
Example 2:
Constraints:
•
•
•
2370. Longest Ideal Subsequence
Topic: Hash Table, String, Dynamic Programming
Difficulty: Medium
Problem:
You are given a string
s consisting of lowercase letters and an integer k. We call a string t ideal if the following conditions are satisfied:•
t is a subsequence of the string s.• The absolute difference in the alphabet order of every two adjacent letters in
t is less than or equal to k.Return the length of the longest ideal string.
A subsequence is a string that can be derived from another string by deleting some or no characters without changing the order of the remaining characters.
Note that the alphabet order is not cyclic. For example, the absolute difference in the alphabet order of
'a' and 'z' is 25, not 1.Example 1:
Input: s = "acfgbd", k = 2
Output: 4
Explanation: The longest ideal string is "acbd". The length of this string is 4, so 4 is returned.
Note that "acfgbd" is not ideal because 'c' and 'f' have a difference of 3 in alphabet order.
Example 2:
Input: s = "abcd", k = 3
Output: 4
Explanation: The longest ideal string is "abcd". The length of this string is 4, so 4 is returned.
Constraints:
•
1 <= s.length <= 10^5•
0 <= k <= 25•
s consists of lowercase English letters.2024-04-26
1289. Minimum Falling Path Sum II
Topic: Array, Dynamic Programming, Matrix
Difficulty: Hard
Problem:
Given an
A falling path with non-zero shifts is a choice of exactly one element from each row of
Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/10/falling-grid.jpg
Example 2:
Constraints:
•
•
•
1289. Minimum Falling Path Sum II
Topic: Array, Dynamic Programming, Matrix
Difficulty: Hard
Problem:
Given an
n x n integer matrix grid, return the minimum sum of a falling path with non-zero shifts.A falling path with non-zero shifts is a choice of exactly one element from each row of
grid such that no two elements chosen in adjacent rows are in the same column.Example 1:
Image: https://assets.leetcode.com/uploads/2021/08/10/falling-grid.jpg
Input: grid = [[1,2,3],[4,5,6],[7,8,9]]
Output: 13
Explanation:
The possible falling paths are:
[1,5,9], [1,5,7], [1,6,7], [1,6,8],
[2,4,8], [2,4,9], [2,6,7], [2,6,8],
[3,4,8], [3,4,9], [3,5,7], [3,5,9]
The falling path with the smallest sum is [1,5,7], so the answer is 13.
Example 2:
Input: grid = [[7]]
Output: 7
Constraints:
•
n == grid.length == grid[i].length•
1 <= n <= 200•
-99 <= grid[i][j] <= 992024-04-27
514. Freedom Trail
Topic: String, Dynamic Programming, Depth-First Search, Breadth-First Search
Difficulty: Hard
Problem:
In the video game Fallout 4, the quest "Road to Freedom" requires players to reach a metal dial called the "Freedom Trail Ring" and use the dial to spell a specific keyword to open the door.
Given a string
Initially, the first character of the ring is aligned at the
At the stage of rotating the ring to spell the key character
1. You can rotate the ring clockwise or anticlockwise by one place, which counts as one step. The final purpose of the rotation is to align one of
2. If the character
Example 1:
Image: https://assets.leetcode.com/uploads/2018/10/22/ring.jpg
Example 2:
Constraints:
•
•
• It is guaranteed that
514. Freedom Trail
Topic: String, Dynamic Programming, Depth-First Search, Breadth-First Search
Difficulty: Hard
Problem:
In the video game Fallout 4, the quest "Road to Freedom" requires players to reach a metal dial called the "Freedom Trail Ring" and use the dial to spell a specific keyword to open the door.
Given a string
ring that represents the code engraved on the outer ring and another string key that represents the keyword that needs to be spelled, return the minimum number of steps to spell all the characters in the keyword.Initially, the first character of the ring is aligned at the
"12:00" direction. You should spell all the characters in key one by one by rotating ring clockwise or anticlockwise to make each character of the string key aligned at the "12:00" direction and then by pressing the center button.At the stage of rotating the ring to spell the key character
key[i]:1. You can rotate the ring clockwise or anticlockwise by one place, which counts as one step. The final purpose of the rotation is to align one of
ring's characters at the "12:00" direction, where this character must equal key[i].2. If the character
key[i] has been aligned at the "12:00" direction, press the center button to spell, which also counts as one step. After the pressing, you could begin to spell the next character in the key (next stage). Otherwise, you have finished all the spelling.Example 1:
Image: https://assets.leetcode.com/uploads/2018/10/22/ring.jpg
Input: ring = "godding", key = "gd"
Output: 4
Explanation:
For the first key character 'g', since it is already in place, we just need 1 step to spell this character.
For the second key character 'd', we need to rotate the ring "godding" anticlockwise by two steps to make it become "ddinggo".
Also, we need 1 more step for spelling.
So the final output is 4.
Example 2:
Input: ring = "godding", key = "godding"
Output: 13
Constraints:
•
1 <= ring.length, key.length <= 100•
ring and key consist of only lower case English letters.• It is guaranteed that
key could always be spelled by rotating ring.2024-04-28
834. Sum of Distances in Tree
Topic: Dynamic Programming, Tree, Depth-First Search, Graph
Difficulty: Hard
Problem:
There is an undirected connected tree with
You are given the integer
Return an array
Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-sumdist1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-sumdist2.jpg
Example 3:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-sumdist3.jpg
Constraints:
•
•
•
•
•
• The given input represents a valid tree.
834. Sum of Distances in Tree
Topic: Dynamic Programming, Tree, Depth-First Search, Graph
Difficulty: Hard
Problem:
There is an undirected connected tree with
n nodes labeled from 0 to n - 1 and n - 1 edges.You are given the integer
n and the array edges where edges[i] = [a_i, b_i] indicates that there is an edge between nodes a_i and b_i in the tree.Return an array
answer of length n where answer[i] is the sum of the distances between the i^th node in the tree and all other nodes.Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-sumdist1.jpg
Input: n = 6, edges = [[0,1],[0,2],[2,3],[2,4],[2,5]]
Output: [8,12,6,10,10,10]
Explanation: The tree is shown above.
We can see that dist(0,1) + dist(0,2) + dist(0,3) + dist(0,4) + dist(0,5)
equals 1 + 1 + 2 + 2 + 2 = 8.
Hence, answer[0] = 8, and so on.
Example 2:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-sumdist2.jpg
Input: n = 1, edges = []
Output: [0]
Example 3:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-sumdist3.jpg
Input: n = 2, edges = [[1,0]]
Output: [1,1]
Constraints:
•
1 <= n <= 3 * 10^4•
edges.length == n - 1•
edges[i].length == 2•
0 <= a_i, b_i < n•
a_i != b_i• The given input represents a valid tree.
2024-04-29
2997. Minimum Number of Operations to Make Array XOR Equal to K
Topic: Array, Bit Manipulation
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
You can apply the following operation on the array any number of times:
• Choose any element of the array and flip a bit in its binary representation. Flipping a bit means changing a
Return the minimum number of operations required to make the bitwise
Note that you can flip leading zero bits in the binary representation of elements. For example, for the number
Example 1:
Example 2:
Constraints:
•
•
•
2997. Minimum Number of Operations to Make Array XOR Equal to K
Topic: Array, Bit Manipulation
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
nums and a positive integer k.You can apply the following operation on the array any number of times:
• Choose any element of the array and flip a bit in its binary representation. Flipping a bit means changing a
0 to 1 or vice versa.Return the minimum number of operations required to make the bitwise
XOR of all elements of the final array equal to k.Note that you can flip leading zero bits in the binary representation of elements. For example, for the number
(101)_2 you can flip the fourth bit and obtain (1101)_2.Example 1:
Input: nums = [2,1,3,4], k = 1
Output: 2
Explanation: We can do the following operations:
- Choose element 2 which is 3 == (011)_2, we flip the first bit and we obtain (010)_2 == 2. nums becomes [2,1,2,4].
- Choose element 0 which is 2 == (010)_2, we flip the third bit and we obtain (110)_2 = 6. nums becomes [6,1,2,4].
The XOR of elements of the final array is (6 XOR 1 XOR 2 XOR 4) == 1 == k.
It can be shown that we cannot make the XOR equal to k in less than 2 operations.
Example 2:
Input: nums = [2,0,2,0], k = 0
Output: 0
Explanation: The XOR of elements of the array is (2 XOR 0 XOR 2 XOR 0) == 0 == k. So no operation is needed.
Constraints:
•
1 <= nums.length <= 10^5•
0 <= nums[i] <= 10^6•
0 <= k <= 10^62024-04-30
1915. Number of Wonderful Substrings
Topic: Hash Table, String, Bit Manipulation, Prefix Sum
Difficulty: Medium
Problem:
A wonderful string is a string where at most one letter appears an odd number of times.
• For example,
Given a string
A substring is a contiguous sequence of characters in a string.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1915. Number of Wonderful Substrings
Topic: Hash Table, String, Bit Manipulation, Prefix Sum
Difficulty: Medium
Problem:
A wonderful string is a string where at most one letter appears an odd number of times.
• For example,
"ccjjc" and "abab" are wonderful, but "ab" is not.Given a string
word that consists of the first ten lowercase English letters ('a' through 'j'), return the number of wonderful non-empty substrings in word. If the same substring appears multiple times in word, then count each occurrence separately.A substring is a contiguous sequence of characters in a string.
Example 1:
Input: word = "aba"
Output: 4
Explanation: The four wonderful substrings are underlined below:
- "aba" -> "a"
- "aba" -> "b"
- "aba" -> "a"
- "aba" -> "aba"
Example 2:
Input: word = "aabb"
Output: 9
Explanation: The nine wonderful substrings are underlined below:
- "aabb" -> "a"
- "aabb" -> "aa"
- "aabb" -> "aab"
- "aabb" -> "aabb"
- "aabb" -> "a"
- "aabb" -> "abb"
- "aabb" -> "b"
- "aabb" -> "bb"
- "aabb" -> "b"
Example 3:
Input: word = "he"
Output: 2
Explanation: The two wonderful substrings are underlined below:
- "he" -> "h"
- "he" -> "e"
Constraints:
•
1 <= word.length <= 10^5•
word consists of lowercase English letters from 'a' to 'j'.2024-05-01
2000. Reverse Prefix of Word
Topic: Two Pointers, String
Difficulty: Easy
Problem:
Given a 0-indexed string
• For example, if
Return the resulting string.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
2000. Reverse Prefix of Word
Topic: Two Pointers, String
Difficulty: Easy
Problem:
Given a 0-indexed string
word and a character ch, reverse the segment of word that starts at index 0 and ends at the index of the first occurrence of ch (inclusive). If the character ch does not exist in word, do nothing.• For example, if
word = "abcdefd" and ch = "d", then you should reverse the segment that starts at 0 and ends at 3 (inclusive). The resulting string will be "dcbaefd".Return the resulting string.
Example 1:
Input: word = "abcdefd", ch = "d"
Output: "dcbaefd"
Explanation: The first occurrence of "d" is at index 3.
Reverse the part of word from 0 to 3 (inclusive), the resulting string is "dcbaefd".
Example 2:
Input: word = "xyxzxe", ch = "z"
Output: "zxyxxe"
Explanation: The first and only occurrence of "z" is at index 3.
Reverse the part of word from 0 to 3 (inclusive), the resulting string is "zxyxxe".
Example 3:
Input: word = "abcd", ch = "z"
Output: "abcd"
Explanation: "z" does not exist in word.
You should not do any reverse operation, the resulting string is "abcd".
Constraints:
•
1 <= word.length <= 250•
word consists of lowercase English letters.•
ch is a lowercase English letter.2024-05-02
2441. Largest Positive Integer That Exists With Its Negative
Topic: Array, Hash Table, Two Pointers, Sorting
Difficulty: Easy
Problem:
Given an integer array
Return the positive integer
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
2441. Largest Positive Integer That Exists With Its Negative
Topic: Array, Hash Table, Two Pointers, Sorting
Difficulty: Easy
Problem:
Given an integer array
nums that does not contain any zeros, find the largest positive integer k such that -k also exists in the array.Return the positive integer
k. If there is no such integer, return -1.Example 1:
Input: nums = [-1,2,-3,3]
Output: 3
Explanation: 3 is the only valid k we can find in the array.
Example 2:
Input: nums = [-1,10,6,7,-7,1]
Output: 7
Explanation: Both 1 and 7 have their corresponding negative values in the array. 7 has a larger value.
Example 3:
Input: nums = [-10,8,6,7,-2,-3]
Output: -1
Explanation: There is no a single valid k, we return -1.
Constraints:
•
1 <= nums.length <= 1000•
-1000 <= nums[i] <= 1000•
nums[i] != 02024-05-03
165. Compare Version Numbers
Topic: Two Pointers, String
Difficulty: Medium
Problem:
Given two version numbers,
Version numbers consist of one or more revisions joined by a dot
To compare version numbers, compare their revisions in left-to-right order. Revisions are compared using their integer value ignoring any leading zeros. This means that revisions
Return the following:
• If
• If
• Otherwise, return
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
• All the given revisions in
165. Compare Version Numbers
Topic: Two Pointers, String
Difficulty: Medium
Problem:
Given two version numbers,
version1 and version2, compare them.Version numbers consist of one or more revisions joined by a dot
'.'. Each revision consists of digits and may contain leading zeros. Every revision contains at least one character. Revisions are 0-indexed from left to right, with the leftmost revision being revision 0, the next revision being revision 1, and so on. For example 2.5.33 and 0.1 are valid version numbers.To compare version numbers, compare their revisions in left-to-right order. Revisions are compared using their integer value ignoring any leading zeros. This means that revisions
1 and 001 are considered equal. If a version number does not specify a revision at an index, then treat the revision as 0. For example, version 1.0 is less than version 1.1 because their revision 0s are the same, but their revision 1s are 0 and 1 respectively, and 0 < 1.Return the following:
• If
version1 < version2, return -1.• If
version1 > version2, return 1.• Otherwise, return
0.Example 1:
Input: version1 = "1.01", version2 = "1.001"
Output: 0
Explanation: Ignoring leading zeroes, both "01" and "001" represent the same integer "1".
Example 2:
Input: version1 = "1.0", version2 = "1.0.0"
Output: 0
Explanation: version1 does not specify revision 2, which means it is treated as "0".
Example 3:
Input: version1 = "0.1", version2 = "1.1"
Output: -1
Explanation: version1's revision 0 is "0", while version2's revision 0 is "1". 0 < 1, so version1 < version2.
Constraints:
•
1 <= version1.length, version2.length <= 500•
version1 and version2 only contain digits and '.'.•
version1 and version2 are valid version numbers.• All the given revisions in
version1 and version2 can be stored in a 32-bit integer.2024-05-04
881. Boats to Save People
Topic: Array, Two Pointers, Greedy, Sorting
Difficulty: Medium
Problem:
You are given an array
Return the minimum number of boats to carry every given person.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
881. Boats to Save People
Topic: Array, Two Pointers, Greedy, Sorting
Difficulty: Medium
Problem:
You are given an array
people where people[i] is the weight of the i^th person, and an infinite number of boats where each boat can carry a maximum weight of limit. Each boat carries at most two people at the same time, provided the sum of the weight of those people is at most limit.Return the minimum number of boats to carry every given person.
Example 1:
Input: people = [1,2], limit = 3
Output: 1
Explanation: 1 boat (1, 2)
Example 2:
Input: people = [3,2,2,1], limit = 3
Output: 3
Explanation: 3 boats (1, 2), (2) and (3)
Example 3:
Input: people = [3,5,3,4], limit = 5
Output: 4
Explanation: 4 boats (3), (3), (4), (5)
Constraints:
•
1 <= people.length <= 5 * 10^4•
1 <= people[i] <= limit <= 3 * 10^42024-05-05
237. Delete Node in a Linked List
Topic: Linked List
Difficulty: Medium
Problem:
There is a singly-linked list
You are given the node to be deleted
All the values of the linked list are unique, and it is guaranteed that the given node
Delete the given node. Note that by deleting the node, we do not mean removing it from memory. We mean:
• The value of the given node should not exist in the linked list.
• The number of nodes in the linked list should decrease by one.
• All the values before
• All the values after
Custom testing:
• For the input, you should provide the entire linked list
• We will build the linked list and pass the node to your function.
• The output will be the entire list after calling your function.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/01/node1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/09/01/node2.jpg
Constraints:
• The number of the nodes in the given list is in the range
•
• The value of each node in the list is unique.
• The
237. Delete Node in a Linked List
Topic: Linked List
Difficulty: Medium
Problem:
There is a singly-linked list
head and we want to delete a node node in it.You are given the node to be deleted
node. You will not be given access to the first node of head.All the values of the linked list are unique, and it is guaranteed that the given node
node is not the last node in the linked list.Delete the given node. Note that by deleting the node, we do not mean removing it from memory. We mean:
• The value of the given node should not exist in the linked list.
• The number of nodes in the linked list should decrease by one.
• All the values before
node should be in the same order.• All the values after
node should be in the same order.Custom testing:
• For the input, you should provide the entire linked list
head and the node to be given node. node should not be the last node of the list and should be an actual node in the list.• We will build the linked list and pass the node to your function.
• The output will be the entire list after calling your function.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/01/node1.jpg
Input: head = [4,5,1,9], node = 5
Output: [4,1,9]
Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/09/01/node2.jpg
Input: head = [4,5,1,9], node = 1
Output: [4,5,9]
Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.
Constraints:
• The number of the nodes in the given list is in the range
[2, 1000].•
-1000 <= Node.val <= 1000• The value of each node in the list is unique.
• The
node to be deleted is in the list and is not a tail node.2024-05-06
2487. Remove Nodes From Linked List
Topic: Linked List, Stack, Recursion, Monotonic Stack
Difficulty: Medium
Problem:
You are given the
Remove every node which has a node with a greater value anywhere to the right side of it.
Return the
Example 1:
Image: https://assets.leetcode.com/uploads/2022/10/02/drawio.png
Example 2:
Constraints:
• The number of the nodes in the given list is in the range
•
2487. Remove Nodes From Linked List
Topic: Linked List, Stack, Recursion, Monotonic Stack
Difficulty: Medium
Problem:
You are given the
head of a linked list.Remove every node which has a node with a greater value anywhere to the right side of it.
Return the
head of the modified linked list.Example 1:
Image: https://assets.leetcode.com/uploads/2022/10/02/drawio.png
Input: head = [5,2,13,3,8]
Output: [13,8]
Explanation: The nodes that should be removed are 5, 2 and 3.
- Node 13 is to the right of node 5.
- Node 13 is to the right of node 2.
- Node 8 is to the right of node 3.
Example 2:
Input: head = [1,1,1,1]
Output: [1,1,1,1]
Explanation: Every node has value 1, so no nodes are removed.
Constraints:
• The number of the nodes in the given list is in the range
[1, 10^5].•
1 <= Node.val <= 10^52024-05-07
2816. Double a Number Represented as a Linked List
Topic: Linked List, Math, Stack
Difficulty: Medium
Problem:
You are given the
Return the
Example 1:
Image: https://assets.leetcode.com/uploads/2023/05/28/example.png
Example 2:
Image: https://assets.leetcode.com/uploads/2023/05/28/example2.png
Constraints:
• The number of nodes in the list is in the range
•
• The input is generated such that the list represents a number that does not have leading zeros, except the number
2816. Double a Number Represented as a Linked List
Topic: Linked List, Math, Stack
Difficulty: Medium
Problem:
You are given the
head of a non-empty linked list representing a non-negative integer without leading zeroes.Return the
head of the linked list after doubling it.Example 1:
Image: https://assets.leetcode.com/uploads/2023/05/28/example.png
Input: head = [1,8,9]
Output: [3,7,8]
Explanation: The figure above corresponds to the given linked list which represents the number 189. Hence, the returned linked list represents the number 189 * 2 = 378.
Example 2:
Image: https://assets.leetcode.com/uploads/2023/05/28/example2.png
Input: head = [9,9,9]
Output: [1,9,9,8]
Explanation: The figure above corresponds to the given linked list which represents the number 999. Hence, the returned linked list reprersents the number 999 * 2 = 1998.
Constraints:
• The number of nodes in the list is in the range
[1, 10^4]•
0 <= Node.val <= 9• The input is generated such that the list represents a number that does not have leading zeros, except the number
0 itself.2024-05-08
506. Relative Ranks
Topic: Array, Sorting, Heap (Priority Queue)
Difficulty: Easy
Problem:
You are given an integer array
The athletes are placed based on their scores, where the
• The
• The
• The
• For the
Return an array
Example 1:
Example 2:
Constraints:
•
•
•
• All the values in
506. Relative Ranks
Topic: Array, Sorting, Heap (Priority Queue)
Difficulty: Easy
Problem:
You are given an integer array
score of size n, where score[i] is the score of the i^th athlete in a competition. All the scores are guaranteed to be unique.The athletes are placed based on their scores, where the
1^st place athlete has the highest score, the 2^nd place athlete has the 2^nd highest score, and so on. The placement of each athlete determines their rank:• The
1^st place athlete's rank is "Gold Medal".• The
2^nd place athlete's rank is "Silver Medal".• The
3^rd place athlete's rank is "Bronze Medal".• For the
4^th place to the n^th place athlete, their rank is their placement number (i.e., the x^th place athlete's rank is "x").Return an array
answer of size n where answer[i] is the rank of the i^th athlete.Example 1:
Input: score = [5,4,3,2,1]
Output: ["Gold Medal","Silver Medal","Bronze Medal","4","5"]
Explanation: The placements are [1^st, 2^nd, 3^rd, 4^th, 5^th].
Example 2:
Input: score = [10,3,8,9,4]
Output: ["Gold Medal","5","Bronze Medal","Silver Medal","4"]
Explanation: The placements are [1^st, 5^th, 3^rd, 2^nd, 4^th].
Constraints:
•
n == score.length•
1 <= n <= 10^4•
0 <= score[i] <= 10^6• All the values in
score are unique.2024-05-09
3075. Maximize Happiness of Selected Children
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
You are given an array
There are
In each turn, when you select a child, the happiness value of all the children that have not been selected till now decreases by
Return the maximum sum of the happiness values of the selected children you can achieve by selecting
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
3075. Maximize Happiness of Selected Children
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
You are given an array
happiness of length n, and a positive integer k.There are
n children standing in a queue, where the i^th child has happiness value happiness[i]. You want to select k children from these n children in k turns.In each turn, when you select a child, the happiness value of all the children that have not been selected till now decreases by
1. Note that the happiness value cannot become negative and gets decremented only if it is positive.Return the maximum sum of the happiness values of the selected children you can achieve by selecting
k children.Example 1:
Input: happiness = [1,2,3], k = 2
Output: 4
Explanation: We can pick 2 children in the following way:
- Pick the child with the happiness value == 3. The happiness value of the remaining children becomes [0,1].
- Pick the child with the happiness value == 1. The happiness value of the remaining child becomes [0]. Note that the happiness value cannot become less than 0.
The sum of the happiness values of the selected children is 3 + 1 = 4.
Example 2:
Input: happiness = [1,1,1,1], k = 2
Output: 1
Explanation: We can pick 2 children in the following way:
- Pick any child with the happiness value == 1. The happiness value of the remaining children becomes [0,0,0].
- Pick the child with the happiness value == 0. The happiness value of the remaining child becomes [0,0].
The sum of the happiness values of the selected children is 1 + 0 = 1.
Example 3:
Input: happiness = [2,3,4,5], k = 1
Output: 5
Explanation: We can pick 1 child in the following way:
- Pick the child with the happiness value == 5. The happiness value of the remaining children becomes [1,2,3].
The sum of the happiness values of the selected children is 5.
Constraints:
•
1 <= n == happiness.length <= 2 * 10^5•
1 <= happiness[i] <= 10^8•
1 <= k <= n