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 <= n2024-05-10
786. K-th Smallest Prime Fraction
Topic: Array, Two Pointers, Binary Search, Sorting, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given a sorted integer array
For every
Return the
Example 1:
Example 2:
Constraints:
•
•
•
•
• All the numbers of
•
Follow up: Can you solve the problem with better than
786. K-th Smallest Prime Fraction
Topic: Array, Two Pointers, Binary Search, Sorting, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given a sorted integer array
arr containing 1 and prime numbers, where all the integers of arr are unique. You are also given an integer k.For every
i and j where 0 <= i < j < arr.length, we consider the fraction arr[i] / arr[j].Return the
k^th smallest fraction considered. Return your answer as an array of integers of size 2, where answer[0] == arr[i] and answer[1] == arr[j].Example 1:
Input: arr = [1,2,3,5], k = 3
Output: [2,5]
Explanation: The fractions to be considered in sorted order are:
1/5, 1/3, 2/5, 1/2, 3/5, and 2/3.
The third fraction is 2/5.
Example 2:
Input: arr = [1,7], k = 1
Output: [1,7]
Constraints:
•
2 <= arr.length <= 1000•
1 <= arr[i] <= 3 * 10^4•
arr[0] == 1•
arr[i] is a prime number for i > 0.• All the numbers of
arr are unique and sorted in strictly increasing order.•
1 <= k <= arr.length * (arr.length - 1) / 2Follow up: Can you solve the problem with better than
O(n^2) complexity?2024-05-11
857. Minimum Cost to Hire K Workers
Topic: Array, Greedy, Sorting, Heap (Priority Queue)
Difficulty: Hard
Problem:
There are
We want to hire exactly
1. Every worker in the paid group must be paid at least their minimum wage expectation.
2. In the group, each worker's pay must be directly proportional to their quality. This means if a worker’s quality is double that of another worker in the group, then they must be paid twice as much as the other worker.
Given the integer
Example 1:
Example 2:
Constraints:
•
•
•
857. Minimum Cost to Hire K Workers
Topic: Array, Greedy, Sorting, Heap (Priority Queue)
Difficulty: Hard
Problem:
There are
n workers. You are given two integer arrays quality and wage where quality[i] is the quality of the i^th worker and wage[i] is the minimum wage expectation for the i^th worker.We want to hire exactly
k workers to form a paid group. To hire a group of k workers, we must pay them according to the following rules:1. Every worker in the paid group must be paid at least their minimum wage expectation.
2. In the group, each worker's pay must be directly proportional to their quality. This means if a worker’s quality is double that of another worker in the group, then they must be paid twice as much as the other worker.
Given the integer
k, return the least amount of money needed to form a paid group satisfying the above conditions. Answers within 10^-5 of the actual answer will be accepted.Example 1:
Input: quality = [10,20,5], wage = [70,50,30], k = 2
Output: 105.00000
Explanation: We pay 70 to 0^th worker and 35 to 2^nd worker.
Example 2:
Input: quality = [3,1,10,10,1], wage = [4,8,2,2,7], k = 3
Output: 30.66667
Explanation: We pay 4 to 0^th worker, 13.33333 to 2^nd and 3^rd workers separately.
Constraints:
•
n == quality.length == wage.length•
1 <= k <= n <= 10^4•
1 <= quality[i], wage[i] <= 10^42024-05-12
2373. Largest Local Values in a Matrix
Topic: Array, Matrix
Difficulty: Easy
Problem:
You are given an
Generate an integer matrix
•
In other words, we want to find the largest value in every contiguous
Return the generated matrix.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/06/21/ex1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2022/07/02/ex2new2.png
Constraints:
•
•
•
2373. Largest Local Values in a Matrix
Topic: Array, Matrix
Difficulty: Easy
Problem:
You are given an
n x n integer matrix grid.Generate an integer matrix
maxLocal of size (n - 2) x (n - 2) such that:•
maxLocal[i][j] is equal to the largest value of the 3 x 3 matrix in grid centered around row i + 1 and column j + 1.In other words, we want to find the largest value in every contiguous
3 x 3 matrix in grid.Return the generated matrix.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/06/21/ex1.png
Input: grid = [[9,9,8,1],[5,6,2,6],[8,2,6,4],[6,2,2,2]]
Output: [[9,9],[8,6]]
Explanation: The diagram above shows the original matrix and the generated matrix.
Notice that each value in the generated matrix corresponds to the largest value of a contiguous 3 x 3 matrix in grid.
Example 2:
Image: https://assets.leetcode.com/uploads/2022/07/02/ex2new2.png
Input: grid = [[1,1,1,1,1],[1,1,1,1,1],[1,1,2,1,1],[1,1,1,1,1],[1,1,1,1,1]]
Output: [[2,2,2],[2,2,2],[2,2,2]]
Explanation: Notice that the 2 is contained within every contiguous 3 x 3 matrix in grid.
Constraints:
•
n == grid.length == grid[i].length•
3 <= n <= 100•
1 <= grid[i][j] <= 1002024-05-13
861. Score After Flipping Matrix
Topic: Array, Greedy, Bit Manipulation, Matrix
Difficulty: Medium
Problem:
You are given an
A move consists of choosing any row or column and toggling each value in that row or column (i.e., changing all
Every row of the matrix is interpreted as a binary number, and the score of the matrix is the sum of these numbers.
Return the highest possible score after making any number of moves (including zero moves).
Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-toogle1.jpg
Example 2:
Constraints:
•
•
•
•
861. Score After Flipping Matrix
Topic: Array, Greedy, Bit Manipulation, Matrix
Difficulty: Medium
Problem:
You are given an
m x n binary matrix grid.A move consists of choosing any row or column and toggling each value in that row or column (i.e., changing all
0's to 1's, and all 1's to 0's).Every row of the matrix is interpreted as a binary number, and the score of the matrix is the sum of these numbers.
Return the highest possible score after making any number of moves (including zero moves).
Example 1:
Image: https://assets.leetcode.com/uploads/2021/07/23/lc-toogle1.jpg
Input: grid = [[0,0,1,1],[1,0,1,0],[1,1,0,0]]
Output: 39
Explanation: 0b1111 + 0b1001 + 0b1111 = 15 + 9 + 15 = 39
Example 2:
Input: grid = [[0]]
Output: 1
Constraints:
•
m == grid.length•
n == grid[i].length•
1 <= m, n <= 20•
grid[i][j] is either 0 or 1.2024-05-14
1219. Path with Maximum Gold
Topic: Array, Backtracking, Matrix
Difficulty: Medium
Problem:
In a gold mine
Return the maximum amount of gold you can collect under the conditions:
• Every time you are located in a cell you will collect all the gold in that cell.
• From your position, you can walk one step to the left, right, up, or down.
• You can't visit the same cell more than once.
• Never visit a cell with
• You can start and stop collecting gold from any position in the grid that has some gold.
Example 1:
Example 2:
Constraints:
•
•
•
•
• There are at most 25 cells containing gold.
1219. Path with Maximum Gold
Topic: Array, Backtracking, Matrix
Difficulty: Medium
Problem:
In a gold mine
grid of size m x n, each cell in this mine has an integer representing the amount of gold in that cell, 0 if it is empty.Return the maximum amount of gold you can collect under the conditions:
• Every time you are located in a cell you will collect all the gold in that cell.
• From your position, you can walk one step to the left, right, up, or down.
• You can't visit the same cell more than once.
• Never visit a cell with
0 gold.• You can start and stop collecting gold from any position in the grid that has some gold.
Example 1:
Input: grid = [[0,6,0],[5,8,7],[0,9,0]]
Output: 24
Explanation:
[[0,6,0],
[5,8,7],
[0,9,0]]
Path to get the maximum gold, 9 -> 8 -> 7.
Example 2:
Input: grid = [[1,0,7],[2,0,6],[3,4,5],[0,3,0],[9,0,20]]
Output: 28
Explanation:
[[1,0,7],
[2,0,6],
[3,4,5],
[0,3,0],
[9,0,20]]
Path to get the maximum gold, 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7.
Constraints:
•
m == grid.length•
n == grid[i].length•
1 <= m, n <= 15•
0 <= grid[i][j] <= 100• There are at most 25 cells containing gold.
2024-05-15
2812. Find the Safest Path in a Grid
Topic: Array, Binary Search, Breadth-First Search, Union Find, Matrix
Difficulty: Medium
Problem:
You are given a 0-indexed 2D matrix
• A cell containing a thief if
• An empty cell if
You are initially positioned at cell
The safeness factor of a path on the grid is defined as the minimum manhattan distance from any cell in the path to any thief in the grid.
Return the maximum safeness factor of all paths leading to cell
An adjacent cell of cell
The Manhattan distance between two cells
Example 1:
Image: https://assets.leetcode.com/uploads/2023/07/02/example1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2023/07/02/example2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2023/07/02/example3.png
Constraints:
•
•
•
• There is at least one thief in the
2812. Find the Safest Path in a Grid
Topic: Array, Binary Search, Breadth-First Search, Union Find, Matrix
Difficulty: Medium
Problem:
You are given a 0-indexed 2D matrix
grid of size n x n, where (r, c) represents:• A cell containing a thief if
grid[r][c] = 1• An empty cell if
grid[r][c] = 0You are initially positioned at cell
(0, 0). In one move, you can move to any adjacent cell in the grid, including cells containing thieves.The safeness factor of a path on the grid is defined as the minimum manhattan distance from any cell in the path to any thief in the grid.
Return the maximum safeness factor of all paths leading to cell
(n - 1, n - 1).An adjacent cell of cell
(r, c), is one of the cells (r, c + 1), (r, c - 1), (r + 1, c) and (r - 1, c) if it exists.The Manhattan distance between two cells
(a, b) and (x, y) is equal to |a - x| + |b - y|, where |val| denotes the absolute value of val.Example 1:
Image: https://assets.leetcode.com/uploads/2023/07/02/example1.png
Input: grid = [[1,0,0],[0,0,0],[0,0,1]]
Output: 0
Explanation: All paths from (0, 0) to (n - 1, n - 1) go through the thieves in cells (0, 0) and (n - 1, n - 1).
Example 2:
Image: https://assets.leetcode.com/uploads/2023/07/02/example2.png
Input: grid = [[0,0,1],[0,0,0],[0,0,0]]
Output: 2
Explanation: The path depicted in the picture above has a safeness factor of 2 since:
- The closest cell of the path to the thief at cell (0, 2) is cell (0, 0). The distance between them is | 0 - 0 | + | 0 - 2 | = 2.
It can be shown that there are no other paths with a higher safeness factor.
Example 3:
Image: https://assets.leetcode.com/uploads/2023/07/02/example3.png
Input: grid = [[0,0,0,1],[0,0,0,0],[0,0,0,0],[1,0,0,0]]
Output: 2
Explanation: The path depicted in the picture above has a safeness factor of 2 since:
- The closest cell of the path to the thief at cell (0, 3) is cell (1, 2). The distance between them is | 0 - 1 | + | 3 - 2 | = 2.
- The closest cell of the path to the thief at cell (3, 0) is cell (3, 2). The distance between them is | 3 - 3 | + | 0 - 2 | = 2.
It can be shown that there are no other paths with a higher safeness factor.
Constraints:
•
1 <= grid.length == n <= 400•
grid[i].length == n•
grid[i][j] is either 0 or 1.• There is at least one thief in the
grid.2024-05-16
2331. Evaluate Boolean Binary Tree
Topic: Tree, Depth-First Search, Binary Tree
Difficulty: Easy
Problem:
You are given the
• Leaf nodes have either the value
• Non-leaf nodes have either the value
The evaluation of a node is as follows:
• If the node is a leaf node, the evaluation is the value of the node, i.e.
• Otherwise, evaluate the node's two children and apply the boolean operation of its value with the children's evaluations.
Return the boolean result of evaluating the
A full binary tree is a binary tree where each node has either
A leaf node is a node that has zero children.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/05/16/example1drawio1.png
Example 2:
Constraints:
• The number of nodes in the tree is in the range
•
• Every node has either
• Leaf nodes have a value of
• Non-leaf nodes have a value of
2331. Evaluate Boolean Binary Tree
Topic: Tree, Depth-First Search, Binary Tree
Difficulty: Easy
Problem:
You are given the
root of a full binary tree with the following properties:• Leaf nodes have either the value
0 or 1, where 0 represents False and 1 represents True.• Non-leaf nodes have either the value
2 or 3, where 2 represents the boolean OR and 3 represents the boolean AND.The evaluation of a node is as follows:
• If the node is a leaf node, the evaluation is the value of the node, i.e.
True or False.• Otherwise, evaluate the node's two children and apply the boolean operation of its value with the children's evaluations.
Return the boolean result of evaluating the
root node.A full binary tree is a binary tree where each node has either
0 or 2 children.A leaf node is a node that has zero children.
Example 1:
Image: https://assets.leetcode.com/uploads/2022/05/16/example1drawio1.png
Input: root = [2,1,3,null,null,0,1]
Output: true
Explanation: The above diagram illustrates the evaluation process.
The AND node evaluates to False AND True = False.
The OR node evaluates to True OR False = True.
The root node evaluates to True, so we return true.
Example 2:
Input: root = [0]
Output: false
Explanation: The root node is a leaf node and it evaluates to false, so we return false.
Constraints:
• The number of nodes in the tree is in the range
[1, 1000].•
0 <= Node.val <= 3• Every node has either
0 or 2 children.• Leaf nodes have a value of
0 or 1.• Non-leaf nodes have a value of
2 or 3.2024-05-17
1325. Delete Leaves With a Given Value
Topic: Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given a binary tree
Note that once you delete a leaf node with value
Example 1:
Image: https://assets.leetcode.com/uploads/2020/01/09/sample_1_1684.png
Example 2:
Image: https://assets.leetcode.com/uploads/2020/01/09/sample_2_1684.png
Example 3:
Image: https://assets.leetcode.com/uploads/2020/01/15/sample_3_1684.png
Constraints:
• The number of nodes in the tree is in the range
•
1325. Delete Leaves With a Given Value
Topic: Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given a binary tree
root and an integer target, delete all the leaf nodes with value target.Note that once you delete a leaf node with value
target, if its parent node becomes a leaf node and has the value target, it should also be deleted (you need to continue doing that until you cannot).Example 1:
Image: https://assets.leetcode.com/uploads/2020/01/09/sample_1_1684.png
Input: root = [1,2,3,2,null,2,4], target = 2
Output: [1,null,3,null,4]
Explanation: Leaf nodes in green with value (target = 2) are removed (Picture in left).
After removing, new nodes become leaf nodes with value (target = 2) (Picture in center).
Example 2:
Image: https://assets.leetcode.com/uploads/2020/01/09/sample_2_1684.png
Input: root = [1,3,3,3,2], target = 3
Output: [1,3,null,null,2]
Example 3:
Image: https://assets.leetcode.com/uploads/2020/01/15/sample_3_1684.png
Input: root = [1,2,null,2,null,2], target = 2
Output: [1]
Explanation: Leaf nodes in green with value (target = 2) are removed at each step.
Constraints:
• The number of nodes in the tree is in the range
[1, 3000].•
1 <= Node.val, target <= 1000