2023-08-29
2483. Minimum Penalty for a Shop
Topic: String, Prefix Sum
Difficulty: Medium
Problem:
You are given the customer visit log of a shop represented by a 0-indexed string
• if the
• whereas
If the shop closes at the
• For every hour when the shop is open and no customers come, the penalty increases by
• For every hour when the shop is closed and customers come, the penalty increases by
Return the earliest hour at which the shop must be closed to incur a minimum penalty.
Note that if a shop closes at the
Example 1:
Example 2:
Example 3:
Constraints:
•
•
2483. Minimum Penalty for a Shop
Topic: String, Prefix Sum
Difficulty: Medium
Problem:
You are given the customer visit log of a shop represented by a 0-indexed string
customers consisting only of characters 'N' and 'Y':• if the
i^th character is 'Y', it means that customers come at the i^th hour• whereas
'N' indicates that no customers come at the i^th hour.If the shop closes at the
j^th hour (0 <= j <= n), the penalty is calculated as follows:• For every hour when the shop is open and no customers come, the penalty increases by
1.• For every hour when the shop is closed and customers come, the penalty increases by
1.Return the earliest hour at which the shop must be closed to incur a minimum penalty.
Note that if a shop closes at the
j^th hour, it means the shop is closed at the hour j.Example 1:
Input: customers = "YYNY"
Output: 2
Explanation:
- Closing the shop at the 0^th hour incurs in 1+1+0+1 = 3 penalty.
- Closing the shop at the 1^st hour incurs in 0+1+0+1 = 2 penalty.
- Closing the shop at the 2^nd hour incurs in 0+0+0+1 = 1 penalty.
- Closing the shop at the 3^rd hour incurs in 0+0+1+1 = 2 penalty.
- Closing the shop at the 4^th hour incurs in 0+0+1+0 = 1 penalty.
Closing the shop at 2^nd or 4^th hour gives a minimum penalty. Since 2 is earlier, the optimal closing time is 2.
Example 2:
Input: customers = "NNNNN"
Output: 0
Explanation: It is best to close the shop at the 0^th hour as no customers arrive.
Example 3:
Input: customers = "YYYY"
Output: 4
Explanation: It is best to close the shop at the 4^th hour as customers arrive at each hour.
Constraints:
•
1 <= customers.length <= 10^5•
customers consists only of characters 'Y' and 'N'.2023-08-30
2366. Minimum Replacements to Sort the Array
Topic: Array, Math, Greedy
Difficulty: Hard
Problem:
You are given a 0-indexed integer array
• For example, consider
Return the minimum number of operations to make an array that is sorted in non-decreasing order.
Example 1:
Example 2:
Constraints:
•
•
2366. Minimum Replacements to Sort the Array
Topic: Array, Math, Greedy
Difficulty: Hard
Problem:
You are given a 0-indexed integer array
nums. In one operation you can replace any element of the array with any two elements that sum to it.• For example, consider
nums = [5,6,7]. In one operation, we can replace nums[1] with 2 and 4 and convert nums to [5,2,4,7].Return the minimum number of operations to make an array that is sorted in non-decreasing order.
Example 1:
Input: nums = [3,9,3]
Output: 2
Explanation: Here are the steps to sort the array in non-decreasing order:
- From [3,9,3], replace the 9 with 3 and 6 so the array becomes [3,3,6,3]
- From [3,3,6,3], replace the 6 with 3 and 3 so the array becomes [3,3,3,3,3]
There are 2 steps to sort the array in non-decreasing order. Therefore, we return 2.
Example 2:
Input: nums = [1,2,3,4,5]
Output: 0
Explanation: The array is already in non-decreasing order. Therefore, we return 0.
Constraints:
•
1 <= nums.length <= 10^5•
1 <= nums[i] <= 10^92023-08-31
1326. Minimum Number of Taps to Open to Water a Garden
Topic: Array, Dynamic Programming, Greedy
Difficulty: Hard
Problem:
There is a one-dimensional garden on the x-axis. The garden starts at the point
There are
Given an integer
Return the minimum number of taps that should be open to water the whole garden, If the garden cannot be watered return -1.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/01/16/1685_example_1.png
Example 2:
Constraints:
•
•
•
1326. Minimum Number of Taps to Open to Water a Garden
Topic: Array, Dynamic Programming, Greedy
Difficulty: Hard
Problem:
There is a one-dimensional garden on the x-axis. The garden starts at the point
0 and ends at the point n. (i.e The length of the garden is n).There are
n + 1 taps located at points [0, 1, ..., n] in the garden.Given an integer
n and an integer array ranges of length n + 1 where ranges[i] (0-indexed) means the i-th tap can water the area [i - ranges[i], i + ranges[i]] if it was open.Return the minimum number of taps that should be open to water the whole garden, If the garden cannot be watered return -1.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/01/16/1685_example_1.png
Input: n = 5, ranges = [3,4,1,1,0,0]
Output: 1
Explanation: The tap at point 0 can cover the interval [-3,3]
The tap at point 1 can cover the interval [-3,5]
The tap at point 2 can cover the interval [1,3]
The tap at point 3 can cover the interval [2,4]
The tap at point 4 can cover the interval [4,4]
The tap at point 5 can cover the interval [5,5]
Opening Only the second tap will water the whole garden [0,5]
Example 2:
Input: n = 3, ranges = [0,0,0,0]
Output: -1
Explanation: Even if you activate all the four taps you cannot water the whole garden.
Constraints:
•
1 <= n <= 10^4•
ranges.length == n + 1•
0 <= ranges[i] <= 1002023-09-01
338. Counting Bits
Topic: Dynamic Programming, Bit Manipulation
Difficulty: Easy
Problem:
Given an integer
Example 1:
Example 2:
Constraints:
•
Follow up:
• It is very easy to come up with a solution with a runtime of
• Can you do it without using any built-in function (i.e., like
338. Counting Bits
Topic: Dynamic Programming, Bit Manipulation
Difficulty: Easy
Problem:
Given an integer
n, return an array ans of length n + 1 such that for each i (0 <= i <= n), ans[i] is the number of 1's in the binary representation of i.Example 1:
Input: n = 2
Output: [0,1,1]
Explanation:
0 --> 0
1 --> 1
2 --> 10
Example 2:
Input: n = 5
Output: [0,1,1,2,1,2]
Explanation:
0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101
Constraints:
•
0 <= n <= 10^5Follow up:
• It is very easy to come up with a solution with a runtime of
O(n log n). Can you do it in linear time O(n) and possibly in a single pass?• Can you do it without using any built-in function (i.e., like
__builtin_popcount in C++)?2023-09-02
2707. Extra Characters in a String
Topic: Array, Hash Table, String, Dynamic Programming, Trie
Difficulty: Medium
Problem:
You are given a 0-indexed string
Return the minimum number of extra characters left over if you break up
Example 1:
Example 2:
Constraints:
•
•
•
•
•
2707. Extra Characters in a String
Topic: Array, Hash Table, String, Dynamic Programming, Trie
Difficulty: Medium
Problem:
You are given a 0-indexed string
s and a dictionary of words dictionary. You have to break s into one or more non-overlapping substrings such that each substring is present in dictionary. There may be some extra characters in s which are not present in any of the substrings.Return the minimum number of extra characters left over if you break up
s optimally.Example 1:
Input: s = "leetscode", dictionary = ["leet","code","leetcode"]
Output: 1
Explanation: We can break s in two substrings: "leet" from index 0 to 3 and "code" from index 5 to 8. There is only 1 unused character (at index 4), so we return 1.
Example 2:
Input: s = "sayhelloworld", dictionary = ["hello","world"]
Output: 3
Explanation: We can break s in two substrings: "hello" from index 3 to 7 and "world" from index 8 to 12. The characters at indices 0, 1, 2 are not used in any substring and thus are considered as extra characters. Hence, we return 3.
Constraints:
•
1 <= s.length <= 50•
1 <= dictionary.length <= 50•
1 <= dictionary[i].length <= 50•
dictionary[i] and s consists of only lowercase English letters•
dictionary contains distinct words2023-09-03
62. Unique Paths
Topic: Math, Dynamic Programming, Combinatorics
Difficulty: Medium
Problem:
There is a robot on an
Given the two integers
The test cases are generated so that the answer will be less than or equal to
Example 1:
Image: https://assets.leetcode.com/uploads/2018/10/22/robot_maze.png
Example 2:
Constraints:
•
62. Unique Paths
Topic: Math, Dynamic Programming, Combinatorics
Difficulty: Medium
Problem:
There is a robot on an
m x n grid. The robot is initially located at the top-left corner (i.e., grid[0][0]). The robot tries to move to the bottom-right corner (i.e., grid[m - 1][n - 1]). The robot can only move either down or right at any point in time.Given the two integers
m and n, return the number of possible unique paths that the robot can take to reach the bottom-right corner.The test cases are generated so that the answer will be less than or equal to
2 * 10^9.Example 1:
Image: https://assets.leetcode.com/uploads/2018/10/22/robot_maze.png
Input: m = 3, n = 7
Output: 28
Example 2:
Input: m = 3, n = 2
Output: 3
Explanation: From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
1. Right -> Down -> Down
2. Down -> Down -> Right
3. Down -> Right -> Down
Constraints:
•
1 <= m, n <= 1002023-09-04
141. Linked List Cycle
Topic: Hash Table, Linked List, Two Pointers
Difficulty: Easy
Problem:
Given
There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the
Return
Example 1:
Image: https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist.png
Example 2:
Image: https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist_test2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist_test3.png
Constraints:
• The number of the nodes in the list is in the range
•
•
Follow up: Can you solve it using
141. Linked List Cycle
Topic: Hash Table, Linked List, Two Pointers
Difficulty: Easy
Problem:
Given
head, the head of a linked list, determine if the linked list has a cycle in it.There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the
next pointer. Internally, pos is used to denote the index of the node that tail's next pointer is connected to. Note that pos is not passed as a parameter.Return
true if there is a cycle in the linked list. Otherwise, return false.Example 1:
Image: https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist.png
Input: head = [3,2,0,-4], pos = 1
Output: true
Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed).
Example 2:
Image: https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist_test2.png
Input: head = [1,2], pos = 0
Output: true
Explanation: There is a cycle in the linked list, where the tail connects to the 0th node.
Example 3:
Image: https://assets.leetcode.com/uploads/2018/12/07/circularlinkedlist_test3.png
Input: head = [1], pos = -1
Output: false
Explanation: There is no cycle in the linked list.
Constraints:
• The number of the nodes in the list is in the range
[0, 10^4].•
-10^5 <= Node.val <= 10^5•
pos is -1 or a valid index in the linked-list.Follow up: Can you solve it using
O(1) (i.e. constant) memory?2023-09-05
138. Copy List with Random Pointer
Topic: Hash Table, Linked List
Difficulty: Medium
Problem:
A linked list of length
Construct a deep copy of the list. The deep copy should consist of exactly
For example, if there are two nodes
Return the head of the copied linked list.
The linked list is represented in the input/output as a list of
•
•
Your code will only be given the
Example 1:
Image: https://assets.leetcode.com/uploads/2019/12/18/e1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2019/12/18/e2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2019/12/18/e3.png
Constraints:
•
•
•
138. Copy List with Random Pointer
Topic: Hash Table, Linked List
Difficulty: Medium
Problem:
A linked list of length
n is given such that each node contains an additional random pointer, which could point to any node in the list, or null.Construct a deep copy of the list. The deep copy should consist of exactly
n brand new nodes, where each new node has its value set to the value of its corresponding original node. Both the next and random pointer of the new nodes should point to new nodes in the copied list such that the pointers in the original list and copied list represent the same list state. None of the pointers in the new list should point to nodes in the original list.For example, if there are two nodes
X and Y in the original list, where X.random --> Y, then for the corresponding two nodes x and y in the copied list, x.random --> y.Return the head of the copied linked list.
The linked list is represented in the input/output as a list of
n nodes. Each node is represented as a pair of [val, random_index] where:•
val: an integer representing Node.val•
random_index: the index of the node (range from 0 to n-1) that the random pointer points to, or null if it does not point to any node.Your code will only be given the
head of the original linked list.Example 1:
Image: https://assets.leetcode.com/uploads/2019/12/18/e1.png
Input: head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
Output: [[7,null],[13,0],[11,4],[10,2],[1,0]]
Example 2:
Image: https://assets.leetcode.com/uploads/2019/12/18/e2.png
Input: head = [[1,1],[2,1]]
Output: [[1,1],[2,1]]
Example 3:
Image: https://assets.leetcode.com/uploads/2019/12/18/e3.png
Input: head = [[3,null],[3,0],[3,null]]
Output: [[3,null],[3,0],[3,null]]
Constraints:
•
0 <= n <= 1000•
-10^4 <= Node.val <= 10^4•
Node.random is null or is pointing to some node in the linked list.2023-09-06
725. Split Linked List in Parts
Topic: Linked List
Difficulty: Medium
Problem:
Given the
The length of each part should be as equal as possible: no two parts should have a size differing by more than one. This may lead to some parts being null.
The parts should be in the order of occurrence in the input list, and parts occurring earlier should always have a size greater than or equal to parts occurring later.
Return an array of the
Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/13/split1-lc.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/13/split2-lc.jpg
Constraints:
• The number of nodes in the list is in the range
•
•
725. Split Linked List in Parts
Topic: Linked List
Difficulty: Medium
Problem:
Given the
head of a singly linked list and an integer k, split the linked list into k consecutive linked list parts.The length of each part should be as equal as possible: no two parts should have a size differing by more than one. This may lead to some parts being null.
The parts should be in the order of occurrence in the input list, and parts occurring earlier should always have a size greater than or equal to parts occurring later.
Return an array of the
k parts.Example 1:
Image: https://assets.leetcode.com/uploads/2021/06/13/split1-lc.jpg
Input: head = [1,2,3], k = 5
Output: [[1],[2],[3],[],[]]
Explanation:
The first element output[0] has output[0].val = 1, output[0].next = null.
The last element output[4] is null, but its string representation as a ListNode is [].
Example 2:
Image: https://assets.leetcode.com/uploads/2021/06/13/split2-lc.jpg
Input: head = [1,2,3,4,5,6,7,8,9,10], k = 3
Output: [[1,2,3,4],[5,6,7],[8,9,10]]
Explanation:
The input has been split into consecutive parts with size difference at most 1, and earlier parts are a larger size than the later parts.
Constraints:
• The number of nodes in the list is in the range
[0, 1000].•
0 <= Node.val <= 1000•
1 <= k <= 502023-09-07
92. Reverse Linked List II
Topic: Linked List
Difficulty: Medium
Problem:
Given the
Example 1:
Image: https://assets.leetcode.com/uploads/2021/02/19/rev2ex2.jpg
Example 2:
Constraints:
• The number of nodes in the list is
•
•
•
Follow up: Could you do it in one pass?
92. Reverse Linked List II
Topic: Linked List
Difficulty: Medium
Problem:
Given the
head of a singly linked list and two integers left and right where left <= right, reverse the nodes of the list from position left to position right, and return the reversed list.Example 1:
Image: https://assets.leetcode.com/uploads/2021/02/19/rev2ex2.jpg
Input: head = [1,2,3,4,5], left = 2, right = 4
Output: [1,4,3,2,5]
Example 2:
Input: head = [5], left = 1, right = 1
Output: [5]
Constraints:
• The number of nodes in the list is
n.•
1 <= n <= 500•
-500 <= Node.val <= 500•
1 <= left <= right <= nFollow up: Could you do it in one pass?
2023-09-08
118. Pascal's Triangle
Topic: Array, Dynamic Programming
Difficulty: Easy
Problem:
Given an integer
In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:
Image: https://upload.wikimedia.org/wikipedia/commons/0/0d/PascalTriangleAnimated2.gif
Example 1:
Example 2:
Constraints:
•
118. Pascal's Triangle
Topic: Array, Dynamic Programming
Difficulty: Easy
Problem:
Given an integer
numRows, return the first numRows of Pascal's triangle.In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:
Image: https://upload.wikimedia.org/wikipedia/commons/0/0d/PascalTriangleAnimated2.gif
Example 1:
Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Example 2:
Input: numRows = 1
Output: [[1]]
Constraints:
•
1 <= numRows <= 302023-09-09
377. Combination Sum IV
Topic: Array, Dynamic Programming
Difficulty: Medium
Problem:
Given an array of distinct integers
The test cases are generated so that the answer can fit in a 32-bit integer.
Example 1:
Example 2:
Constraints:
•
•
• All the elements of
•
Follow up: What if negative numbers are allowed in the given array? How does it change the problem? What limitation we need to add to the question to allow negative numbers?
377. Combination Sum IV
Topic: Array, Dynamic Programming
Difficulty: Medium
Problem:
Given an array of distinct integers
nums and a target integer target, return the number of possible combinations that add up to target.The test cases are generated so that the answer can fit in a 32-bit integer.
Example 1:
Input: nums = [1,2,3], target = 4
Output: 7
Explanation:
The possible combination ways are:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
Note that different sequences are counted as different combinations.
Example 2:
Input: nums = [9], target = 3
Output: 0
Constraints:
•
1 <= nums.length <= 200•
1 <= nums[i] <= 1000• All the elements of
nums are unique.•
1 <= target <= 1000Follow up: What if negative numbers are allowed in the given array? How does it change the problem? What limitation we need to add to the question to allow negative numbers?
2023-09-10
1359. Count All Valid Pickup and Delivery Options
Topic: Math, Dynamic Programming, Combinatorics
Difficulty: Hard
Problem:
Given
Count all valid pickup/delivery possible sequences such that delivery(i) is always after of pickup(i).
Since the answer may be too large, return it modulo 10^9 + 7.
Example 1:
Example 2:
Example 3:
Constraints:
•
1359. Count All Valid Pickup and Delivery Options
Topic: Math, Dynamic Programming, Combinatorics
Difficulty: Hard
Problem:
Given
n orders, each order consist in pickup and delivery services. Count all valid pickup/delivery possible sequences such that delivery(i) is always after of pickup(i).
Since the answer may be too large, return it modulo 10^9 + 7.
Example 1:
Input: n = 1
Output: 1
Explanation: Unique order (P1, D1), Delivery 1 always is after of Pickup 1.
Example 2:
Input: n = 2
Output: 6
Explanation: All possible orders:
(P1,P2,D1,D2), (P1,P2,D2,D1), (P1,D1,P2,D2), (P2,P1,D1,D2), (P2,P1,D2,D1) and (P2,D2,P1,D1).
This is an invalid order (P1,D2,P2,D1) because Pickup 2 is after of Delivery 2.
Example 3:
Input: n = 3
Output: 90
Constraints:
•
1 <= n <= 5002023-09-11
1282. Group the People Given the Group Size They Belong To
Topic: Array, Hash Table
Difficulty: Medium
Problem:
There are
You are given an integer array
Return a list of groups such that each person
Each person should appear in exactly one group, and every person must be in a group. If there are multiple answers, return any of them. It is guaranteed that there will be at least one valid solution for the given input.
Example 1:
Example 2:
Constraints:
•
•
•
1282. Group the People Given the Group Size They Belong To
Topic: Array, Hash Table
Difficulty: Medium
Problem:
There are
n people that are split into some unknown number of groups. Each person is labeled with a unique ID from 0 to n - 1.You are given an integer array
groupSizes, where groupSizes[i] is the size of the group that person i is in. For example, if groupSizes[1] = 3, then person 1 must be in a group of size 3.Return a list of groups such that each person
i is in a group of size groupSizes[i].Each person should appear in exactly one group, and every person must be in a group. If there are multiple answers, return any of them. It is guaranteed that there will be at least one valid solution for the given input.
Example 1:
Input: groupSizes = [3,3,3,3,3,1,3]
Output: [[5],[0,1,2],[3,4,6]]
Explanation:
The first group is [5]. The size is 1, and groupSizes[5] = 1.
The second group is [0,1,2]. The size is 3, and groupSizes[0] = groupSizes[1] = groupSizes[2] = 3.
The third group is [3,4,6]. The size is 3, and groupSizes[3] = groupSizes[4] = groupSizes[6] = 3.
Other possible solutions are [[2,1,6],[5],[0,4,3]] and [[5],[0,6,2],[4,3,1]].
Example 2:
Input: groupSizes = [2,1,3,3,3,2]
Output: [[1],[0,5],[2,3,4]]
Constraints:
•
groupSizes.length == n•
1 <= n <= 500•
1 <= groupSizes[i] <= n2023-09-12
1647. Minimum Deletions to Make Character Frequencies Unique
Topic: Hash Table, String, Greedy, Sorting
Difficulty: Medium
Problem:
A string
Given a string
The frequency of a character in a string is the number of times it appears in the string. For example, in the string
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1647. Minimum Deletions to Make Character Frequencies Unique
Topic: Hash Table, String, Greedy, Sorting
Difficulty: Medium
Problem:
A string
s is called good if there are no two different characters in s that have the same frequency.Given a string
s, return the minimum number of characters you need to delete to make s good.The frequency of a character in a string is the number of times it appears in the string. For example, in the string
"aab", the frequency of 'a' is 2, while the frequency of 'b' is 1.Example 1:
Input: s = "aab"
Output: 0
Explanation: s is already good.
Example 2:
Input: s = "aaabbbcc"
Output: 2
Explanation: You can delete two 'b's resulting in the good string "aaabcc".
Another way it to delete one 'b' and one 'c' resulting in the good string "aaabbc".
Example 3:
Input: s = "ceabaacb"
Output: 2
Explanation: You can delete both 'c's resulting in the good string "eabaab".
Note that we only care about characters that are still in the string at the end (i.e. frequency of 0 is ignored).
Constraints:
•
1 <= s.length <= 10^5•
s contains only lowercase English letters.2023-09-13
135. Candy
Topic: Array, Greedy
Difficulty: Hard
Problem:
There are
You are giving candies to these children subjected to the following requirements:
• Each child must have at least one candy.
• Children with a higher rating get more candies than their neighbors.
Return the minimum number of candies you need to have to distribute the candies to the children.
Example 1:
Example 2:
Constraints:
•
•
•
135. Candy
Topic: Array, Greedy
Difficulty: Hard
Problem:
There are
n children standing in a line. Each child is assigned a rating value given in the integer array ratings.You are giving candies to these children subjected to the following requirements:
• Each child must have at least one candy.
• Children with a higher rating get more candies than their neighbors.
Return the minimum number of candies you need to have to distribute the candies to the children.
Example 1:
Input: ratings = [1,0,2]
Output: 5
Explanation: You can allocate to the first, second and third child with 2, 1, 2 candies respectively.
Example 2:
Input: ratings = [1,2,2]
Output: 4
Explanation: You can allocate to the first, second and third child with 1, 2, 1 candies respectively.
The third child gets 1 candy because it satisfies the above two conditions.
Constraints:
•
n == ratings.length•
1 <= n <= 2 * 10^4•
0 <= ratings[i] <= 2 * 10^42023-09-14
332. Reconstruct Itinerary
Topic: Depth-First Search, Graph, Eulerian Circuit
Difficulty: Hard
Problem:
You are given a list of airline
All of the tickets belong to a man who departs from
• For example, the itinerary
You may assume all tickets form at least one valid itinerary. You must use all the tickets once and only once.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/03/14/itinerary1-graph.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/03/14/itinerary2-graph.jpg
Constraints:
•
•
•
•
•
•
332. Reconstruct Itinerary
Topic: Depth-First Search, Graph, Eulerian Circuit
Difficulty: Hard
Problem:
You are given a list of airline
tickets where tickets[i] = [from_i, to_i] represent the departure and the arrival airports of one flight. Reconstruct the itinerary in order and return it.All of the tickets belong to a man who departs from
"JFK", thus, the itinerary must begin with "JFK". If there are multiple valid itineraries, you should return the itinerary that has the smallest lexical order when read as a single string.• For example, the itinerary
["JFK", "LGA"] has a smaller lexical order than ["JFK", "LGB"].You may assume all tickets form at least one valid itinerary. You must use all the tickets once and only once.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/03/14/itinerary1-graph.jpg
Input: tickets = [["MUC","LHR"],["JFK","MUC"],["SFO","SJC"],["LHR","SFO"]]
Output: ["JFK","MUC","LHR","SFO","SJC"]
Example 2:
Image: https://assets.leetcode.com/uploads/2021/03/14/itinerary2-graph.jpg
Input: tickets = [["JFK","SFO"],["JFK","ATL"],["SFO","ATL"],["ATL","JFK"],["ATL","SFO"]]
Output: ["JFK","ATL","JFK","SFO","ATL","SFO"]
Explanation: Another possible reconstruction is ["JFK","SFO","ATL","JFK","ATL","SFO"] but it is larger in lexical order.
Constraints:
•
1 <= tickets.length <= 300•
tickets[i].length == 2•
from_i.length == 3•
to_i.length == 3•
from_i and to_i consist of uppercase English letters.•
from_i != to_i2023-09-15
1584. Min Cost to Connect All Points
Topic: Array, Union Find, Graph, Minimum Spanning Tree
Difficulty: Medium
Problem:
You are given an array
The cost of connecting two points
Return the minimum cost to make all points connected. All points are connected if there is exactly one simple path between any two points.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/26/d.png
Example 2:
Constraints:
•
•
• All pairs
1584. Min Cost to Connect All Points
Topic: Array, Union Find, Graph, Minimum Spanning Tree
Difficulty: Medium
Problem:
You are given an array
points representing integer coordinates of some points on a 2D-plane, where points[i] = [x_i, y_i].The cost of connecting two points
[x_i, y_i] and [x_j, y_j] is the manhattan distance between them: |x_i - x_j| + |y_i - y_j|, where |val| denotes the absolute value of val.Return the minimum cost to make all points connected. All points are connected if there is exactly one simple path between any two points.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/08/26/d.png
Input: points = [[0,0],[2,2],[3,10],[5,2],[7,0]]
Output: 20
Explanation:
Image: [https://assets.leetcode.com/uploads/2020/08/26/c.png](https://assets.leetcode.com/uploads/2020/08/26/c.png)
We can connect the points as shown above to get the minimum cost of 20.
Notice that there is a unique path between every pair of points.
Example 2:
Input: points = [[3,12],[-2,5],[-4,1]]
Output: 18
Constraints:
•
1 <= points.length <= 1000•
-10^6 <= x_i, y_i <= 10^6• All pairs
(x_i, y_i) are distinct.2023-09-16
1631. Path With Minimum Effort
Topic: Array, Binary Search, Depth-First Search, Breadth-First Search, Union Find, Heap (Priority Queue), Matrix
Difficulty: Medium
Problem:
You are a hiker preparing for an upcoming hike. You are given
A route's effort is the maximum absolute difference in heights between two consecutive cells of the route.
Return the minimum effort required to travel from the top-left cell to the bottom-right cell.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/10/04/ex1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2020/10/04/ex2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2020/10/04/ex3.png
Constraints:
•
•
•
•
1631. Path With Minimum Effort
Topic: Array, Binary Search, Depth-First Search, Breadth-First Search, Union Find, Heap (Priority Queue), Matrix
Difficulty: Medium
Problem:
You are a hiker preparing for an upcoming hike. You are given
heights, a 2D array of size rows x columns, where heights[row][col] represents the height of cell (row, col). You are situated in the top-left cell, (0, 0), and you hope to travel to the bottom-right cell, (rows-1, columns-1) (i.e., 0-indexed). You can move up, down, left, or right, and you wish to find a route that requires the minimum effort.A route's effort is the maximum absolute difference in heights between two consecutive cells of the route.
Return the minimum effort required to travel from the top-left cell to the bottom-right cell.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/10/04/ex1.png
Input: heights = [[1,2,2],[3,8,2],[5,3,5]]
Output: 2
Explanation: The route of [1,3,5,3,5] has a maximum absolute difference of 2 in consecutive cells.
This is better than the route of [1,2,2,2,5], where the maximum absolute difference is 3.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/10/04/ex2.png
Input: heights = [[1,2,3],[3,8,4],[5,3,5]]
Output: 1
Explanation: The route of [1,2,3,4,5] has a maximum absolute difference of 1 in consecutive cells, which is better than route [1,3,5,3,5].
Example 3:
Image: https://assets.leetcode.com/uploads/2020/10/04/ex3.png
Input: heights = [[1,2,1,1,1],[1,2,1,2,1],[1,2,1,2,1],[1,2,1,2,1],[1,1,1,2,1]]
Output: 0
Explanation: This route does not require any effort.
Constraints:
•
rows == heights.length•
columns == heights[i].length•
1 <= rows, columns <= 100•
1 <= heights[i][j] <= 10^62023-09-17
847. Shortest Path Visiting All Nodes
Topic: Dynamic Programming, Bit Manipulation, Breadth-First Search, Graph, Bitmask
Difficulty: Hard
Problem:
You have an undirected, connected graph of
Return the length of the shortest path that visits every node. You may start and stop at any node, you may revisit nodes multiple times, and you may reuse edges.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/05/12/shortest1-graph.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/05/12/shortest2-graph.jpg
Constraints:
•
•
•
•
• If
• The input graph is always connected.
847. Shortest Path Visiting All Nodes
Topic: Dynamic Programming, Bit Manipulation, Breadth-First Search, Graph, Bitmask
Difficulty: Hard
Problem:
You have an undirected, connected graph of
n nodes labeled from 0 to n - 1. You are given an array graph where graph[i] is a list of all the nodes connected with node i by an edge.Return the length of the shortest path that visits every node. You may start and stop at any node, you may revisit nodes multiple times, and you may reuse edges.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/05/12/shortest1-graph.jpg
Input: graph = [[1,2,3],[0],[0],[0]]
Output: 4
Explanation: One possible path is [1,0,2,0,3]
Example 2:
Image: https://assets.leetcode.com/uploads/2021/05/12/shortest2-graph.jpg
Input: graph = [[1],[0,2,4],[1,3,4],[2],[1,2]]
Output: 4
Explanation: One possible path is [0,1,4,2,3]
Constraints:
•
n == graph.length•
1 <= n <= 12•
0 <= graph[i].length < n•
graph[i] does not contain i.• If
graph[a] contains b, then graph[b] contains a.• The input graph is always connected.