2022-06-20
820. Short Encoding of Words
Topic: Array, Hash Table, String, Trie
Difficulty: Medium
Problem:
A valid encoding of an array of
•
• The reference string
• For each index
Given an array of
Example 1:
Example 2:
Constraints:
•
•
•
820. Short Encoding of Words
Topic: Array, Hash Table, String, Trie
Difficulty: Medium
Problem:
A valid encoding of an array of
words is any reference string s and array of indices indices such that:•
words.length == indices.length• The reference string
s ends with the '#' character.• For each index
indices[i], the substring of s starting from indices[i] and up to (but not including) the next '#' character is equal to words[i].Given an array of
words, return the length of the shortest reference string s possible of any valid encoding of words.Example 1:
Input: words = ["time", "me", "bell"]
Output: 10
Explanation: A valid encoding would be s = "time#bell#" and indices = [0, 2, 5].
words[0] = "time", the substring of s starting from indices[0] = 0 to the next '#' is underlined in "time#bell#"
words[1] = "me", the substring of s starting from indices[1] = 2 to the next '#' is underlined in "time#bell#"
words[2] = "bell", the substring of s starting from indices[2] = 5 to the next '#' is underlined in "time#bell#"
Example 2:
Input: words = ["t"]
Output: 2
Explanation: A valid encoding would be s = "t#" and indices = [0].
Constraints:
•
1 <= words.length <= 2000•
1 <= words[i].length <= 7•
words[i] consists of only lowercase letters.2022-06-21
1642. Furthest Building You Can Reach
Topic: Array, Greedy, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given an integer array
You start your journey from building
While moving from building
• If the current building's height is greater than or equal to the next building's height, you do not need a ladder or bricks.
• If the current building's height is less than the next building's height, you can either use one ladder or
Return the furthest building index (0-indexed) you can reach if you use the given ladders and bricks optimally.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/10/27/q4.gif
Example 2:
Example 3:
Constraints:
•
•
•
•
1642. Furthest Building You Can Reach
Topic: Array, Greedy, Heap (Priority Queue)
Difficulty: Medium
Problem:
You are given an integer array
heights representing the heights of buildings, some bricks, and some ladders.You start your journey from building
0 and move to the next building by possibly using bricks or ladders.While moving from building
i to building i+1 (0-indexed),• If the current building's height is greater than or equal to the next building's height, you do not need a ladder or bricks.
• If the current building's height is less than the next building's height, you can either use one ladder or
(h[i+1] - h[i]) bricks.Return the furthest building index (0-indexed) you can reach if you use the given ladders and bricks optimally.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/10/27/q4.gif
Input: heights = [4,2,7,6,9,14,12], bricks = 5, ladders = 1
Output: 4
Explanation: Starting at building 0, you can follow these steps:
- Go to building 1 without using ladders nor bricks since 4 >= 2.
- Go to building 2 using 5 bricks. You must use either bricks or ladders because 2 < 7.
- Go to building 3 without using ladders nor bricks since 7 >= 6.
- Go to building 4 using your only ladder. You must use either bricks or ladders because 6 < 9.
It is impossible to go beyond building 4 because you do not have any more bricks or ladders.
Example 2:
Input: heights = [4,12,2,7,3,18,20,3,19], bricks = 10, ladders = 2
Output: 7
Example 3:
Input: heights = [14,3,19,3], bricks = 17, ladders = 0
Output: 3
Constraints:
•
1 <= heights.length <= 10^5•
1 <= heights[i] <= 10^6•
0 <= bricks <= 10^9•
0 <= ladders <= heights.length2022-06-22
215. Kth Largest Element in an Array
Topic: Array, Divide and Conquer, Sorting, Heap (Priority Queue), Quickselect
Difficulty: Medium
Problem:
Given an integer array
Note that it is the
Example 1:
Example 2:
Constraints:
•
•
215. Kth Largest Element in an Array
Topic: Array, Divide and Conquer, Sorting, Heap (Priority Queue), Quickselect
Difficulty: Medium
Problem:
Given an integer array
nums and an integer k, return the k^th largest element in the array.Note that it is the
k^th largest element in the sorted order, not the k^th distinct element.Example 1:
Input: nums = [3,2,1,5,6,4], k = 2
Output: 5
Example 2:
Input: nums = [3,2,3,1,2,4,5,5,6], k = 4
Output: 4
Constraints:
•
1 <= k <= nums.length <= 10^4•
-10^4 <= nums[i] <= 10^42022-06-23
630. Course Schedule III
Topic: Array, Greedy, Heap (Priority Queue)
Difficulty: Hard
Problem:
There are
You will start on the
Return the maximum number of courses that you can take.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
630. Course Schedule III
Topic: Array, Greedy, Heap (Priority Queue)
Difficulty: Hard
Problem:
There are
n different online courses numbered from 1 to n. You are given an array courses where courses[i] = [duration_i, lastDay_i] indicate that the i^th course should be taken continuously for duration_i days and must be finished before or on lastDay_i.You will start on the
1^st day and you cannot take two or more courses simultaneously.Return the maximum number of courses that you can take.
Example 1:
Input: courses = [[100,200],[200,1300],[1000,1250],[2000,3200]]
Output: 3
Explanation:
There are totally 4 courses, but you can take 3 courses at most:
First, take the 1^st course, it costs 100 days so you will finish it on the 100^th day, and ready to take the next course on the 101^st day.
Second, take the 3^rd course, it costs 1000 days so you will finish it on the 1100^th day, and ready to take the next course on the 1101^st day.
Third, take the 2^nd course, it costs 200 days so you will finish it on the 1300^th day.
The 4^th course cannot be taken now, since you will finish it on the 3300^th day, which exceeds the closed date.
Example 2:
Input: courses = [[1,2]]
Output: 1
Example 3:
Input: courses = [[3,2],[4,3]]
Output: 0
Constraints:
•
1 <= courses.length <= 10^4•
1 <= duration_i, lastDay_i <= 10^42022-06-24
1354. Construct Target Array With Multiple Sums
Topic: Array, Heap (Priority Queue)
Difficulty: Hard
Problem:
You are given an array
• let
• choose index
• You may repeat this procedure as many times as needed.
Return
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1354. Construct Target Array With Multiple Sums
Topic: Array, Heap (Priority Queue)
Difficulty: Hard
Problem:
You are given an array
target of n integers. From a starting array arr consisting of n 1's, you may perform the following procedure :• let
x be the sum of all elements currently in your array.• choose index
i, such that 0 <= i < n and set the value of arr at index i to x.• You may repeat this procedure as many times as needed.
Return
true if it is possible to construct the target array from arr, otherwise, return false.Example 1:
Input: target = [9,3,5]
Output: true
Explanation: Start with arr = [1, 1, 1]
[1, 1, 1], sum = 3 choose index 1
[1, 3, 1], sum = 5 choose index 2
[1, 3, 5], sum = 9 choose index 0
[9, 3, 5] Done
Example 2:
Input: target = [1,1,1,2]
Output: false
Explanation: Impossible to create target array from [1,1,1,1].
Example 3:
Input: target = [8,5]
Output: true
Constraints:
•
n == target.length•
1 <= n <= 5 * 10^4•
1 <= target[i] <= 10^92022-06-25
665. Non-decreasing Array
Topic: Array
Difficulty: Medium
Problem:
Given an array
We define an array is non-decreasing if
Example 1:
Example 2:
Constraints:
•
•
•
665. Non-decreasing Array
Topic: Array
Difficulty: Medium
Problem:
Given an array
nums with n integers, your task is to check if it could become non-decreasing by modifying at most one element.We define an array is non-decreasing if
nums[i] <= nums[i + 1] holds for every i (0-based) such that (0 <= i <= n - 2).Example 1:
Input: nums = [4,2,3]
Output: true
Explanation: You could modify the first 4 to 1 to get a non-decreasing array.
Example 2:
Input: nums = [4,2,1]
Output: false
Explanation: You can't get a non-decreasing array by modify at most one element.
Constraints:
•
n == nums.length•
1 <= n <= 10^4•
-10^5 <= nums[i] <= 10^52022-06-26
1423. Maximum Points You Can Obtain from Cards
Topic: Array, Sliding Window, Prefix Sum
Difficulty: Medium
Problem:
There are several cards arranged in a row, and each card has an associated number of points. The points are given in the integer array
In one step, you can take one card from the beginning or from the end of the row. You have to take exactly
Your score is the sum of the points of the cards you have taken.
Given the integer array
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1423. Maximum Points You Can Obtain from Cards
Topic: Array, Sliding Window, Prefix Sum
Difficulty: Medium
Problem:
There are several cards arranged in a row, and each card has an associated number of points. The points are given in the integer array
cardPoints.In one step, you can take one card from the beginning or from the end of the row. You have to take exactly
k cards.Your score is the sum of the points of the cards you have taken.
Given the integer array
cardPoints and the integer k, return the maximum score you can obtain.Example 1:
Input: cardPoints = [1,2,3,4,5,6,1], k = 3
Output: 12
Explanation: After the first step, your score will always be 1. However, choosing the rightmost card first will maximize your total score. The optimal strategy is to take the three cards on the right, giving a final score of 1 + 6 + 5 = 12.
Example 2:
Input: cardPoints = [2,2,2], k = 2
Output: 4
Explanation: Regardless of which two cards you take, your score will always be 4.
Example 3:
Input: cardPoints = [9,7,7,9,7,7,9], k = 7
Output: 55
Explanation: You have to take all the cards. Your score is the sum of points of all cards.
Constraints:
•
1 <= cardPoints.length <= 10^5•
1 <= cardPoints[i] <= 10^4•
1 <= k <= cardPoints.length2022-06-27
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers
Topic: String, Greedy
Difficulty: Medium
Problem:
A decimal number is called deci-binary if each of its digits is either
Given a string
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers
Topic: String, Greedy
Difficulty: Medium
Problem:
A decimal number is called deci-binary if each of its digits is either
0 or 1 without any leading zeros. For example, 101 and 1100 are deci-binary, while 112 and 3001 are not.Given a string
n that represents a positive decimal integer, return the minimum number of positive deci-binary numbers needed so that they sum up to n.Example 1:
Input: n = "32"
Output: 3
Explanation: 10 + 11 + 11 = 32
Example 2:
Input: n = "82734"
Output: 8
Example 3:
Input: n = "27346209830709182346"
Output: 9
Constraints:
•
1 <= n.length <= 10^5•
n consists of only digits.•
n does not contain any leading zeros and represents a positive integer.2022-06-28
1647. Minimum Deletions to Make Character Frequencies Unique
Topic: 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: 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.2022-06-29
406. Queue Reconstruction by Height
Topic: Array, Greedy, Binary Indexed Tree, Segment Tree, Sorting
Difficulty: Medium
Problem:
You are given an array of people,
Reconstruct and return the queue that is represented by the input array
Example 1:
Example 2:
Constraints:
•
•
•
• It is guaranteed that the queue can be reconstructed.
406. Queue Reconstruction by Height
Topic: Array, Greedy, Binary Indexed Tree, Segment Tree, Sorting
Difficulty: Medium
Problem:
You are given an array of people,
people, which are the attributes of some people in a queue (not necessarily in order). Each people[i] = [h_i, k_i] represents the i^th person of height h_i with exactly k_i other people in front who have a height greater than or equal to h_i.Reconstruct and return the queue that is represented by the input array
people. The returned queue should be formatted as an array queue, where queue[j] = [h_j, k_j] is the attributes of the j^th person in the queue (queue[0] is the person at the front of the queue).Example 1:
Input: people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]
Output: [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]
Explanation:
Person 0 has height 5 with no other people taller or the same height in front.
Person 1 has height 7 with no other people taller or the same height in front.
Person 2 has height 5 with two persons taller or the same height in front, which is person 0 and 1.
Person 3 has height 6 with one person taller or the same height in front, which is person 1.
Person 4 has height 4 with four people taller or the same height in front, which are people 0, 1, 2, and 3.
Person 5 has height 7 with one person taller or the same height in front, which is person 1.
Hence [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] is the reconstructed queue.
Example 2:
Input: people = [[6,0],[5,0],[4,0],[3,2],[2,2],[1,4]]
Output: [[4,0],[5,0],[2,2],[3,2],[1,4],[6,0]]
Constraints:
•
1 <= people.length <= 2000•
0 <= h_i <= 10^6•
0 <= k_i < people.length• It is guaranteed that the queue can be reconstructed.
2022-06-30
462. Minimum Moves to Equal Array Elements II
Topic: Array, Math, Sorting
Difficulty: Medium
Problem:
Given an integer array
In one move, you can increment or decrement an element of the array by
Test cases are designed so that the answer will fit in a 32-bit integer.
Example 1:
Example 2:
Constraints:
•
•
•
462. Minimum Moves to Equal Array Elements II
Topic: Array, Math, Sorting
Difficulty: Medium
Problem:
Given an integer array
nums of size n, return the minimum number of moves required to make all array elements equal.In one move, you can increment or decrement an element of the array by
1.Test cases are designed so that the answer will fit in a 32-bit integer.
Example 1:
Input: nums = [1,2,3]
Output: 2
Explanation:
Only two moves are needed (remember each move increments or decrements one element):
[1,2,3] => [2,2,3] => [2,2,2]
Example 2:
Input: nums = [1,10,2,9]
Output: 16
Constraints:
•
n == nums.length•
1 <= nums.length <= 10^5•
-10^9 <= nums[i] <= 10^92022-07-01
1710. Maximum Units on a Truck
Topic: Array, Greedy, Sorting
Difficulty: Easy
Problem:
You are assigned to put some amount of boxes onto one truck. You are given a 2D array
•
•
You are also given an integer
Return the maximum total number of units that can be put on the truck.
Example 1:
Example 2:
Constraints:
•
•
•
1710. Maximum Units on a Truck
Topic: Array, Greedy, Sorting
Difficulty: Easy
Problem:
You are assigned to put some amount of boxes onto one truck. You are given a 2D array
boxTypes, where boxTypes[i] = [numberOfBoxes_i, numberOfUnitsPerBox_i]:•
numberOfBoxes_i is the number of boxes of type i.•
numberOfUnitsPerBox_i is the number of units in each box of the type i.You are also given an integer
truckSize, which is the maximum number of boxes that can be put on the truck. You can choose any boxes to put on the truck as long as the number of boxes does not exceed truckSize.Return the maximum total number of units that can be put on the truck.
Example 1:
Input: boxTypes = [[1,3],[2,2],[3,1]], truckSize = 4
Output: 8
Explanation: There are:
- 1 box of the first type that contains 3 units.
- 2 boxes of the second type that contain 2 units each.
- 3 boxes of the third type that contain 1 unit each.
You can take all the boxes of the first and second types, and one box of the third type.
The total number of units will be = (1 * 3) + (2 * 2) + (1 * 1) = 8.
Example 2:
Input: boxTypes = [[5,10],[2,5],[4,7],[3,9]], truckSize = 10
Output: 91
Constraints:
•
1 <= boxTypes.length <= 1000•
1 <= numberOfBoxes_i, numberOfUnitsPerBox_i <= 1000•
1 <= truckSize <= 10^62022-07-02
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
You are given a rectangular cake of size
•
•
Return the maximum area of a piece of cake after you cut at each horizontal and vertical position provided in the arrays
Example 1:
Image: https://assets.leetcode.com/uploads/2020/05/14/leetcode_max_area_2.png
Example 2:
Image: https://assets.leetcode.com/uploads/2020/05/14/leetcode_max_area_3.png
Example 3:
Constraints:
•
•
•
•
•
• All the elements in
• All the elements in
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts
Topic: Array, Greedy, Sorting
Difficulty: Medium
Problem:
You are given a rectangular cake of size
h x w and two arrays of integers horizontalCuts and verticalCuts where:•
horizontalCuts[i] is the distance from the top of the rectangular cake to the i^th horizontal cut and similarly, and•
verticalCuts[j] is the distance from the left of the rectangular cake to the j^th vertical cut.Return the maximum area of a piece of cake after you cut at each horizontal and vertical position provided in the arrays
horizontalCuts and verticalCuts. Since the answer can be a large number, return this modulo 10^9 + 7.Example 1:
Image: https://assets.leetcode.com/uploads/2020/05/14/leetcode_max_area_2.png
Input: h = 5, w = 4, horizontalCuts = [1,2,4], verticalCuts = [1,3]
Output: 4
Explanation: The figure above represents the given rectangular cake. Red lines are the horizontal and vertical cuts. After you cut the cake, the green piece of cake has the maximum area.
Example 2:
Image: https://assets.leetcode.com/uploads/2020/05/14/leetcode_max_area_3.png
Input: h = 5, w = 4, horizontalCuts = [3,1], verticalCuts = [1]
Output: 6
Explanation: The figure above represents the given rectangular cake. Red lines are the horizontal and vertical cuts. After you cut the cake, the green and yellow pieces of cake have the maximum area.
Example 3:
Input: h = 5, w = 4, horizontalCuts = [3], verticalCuts = [3]
Output: 9
Constraints:
•
2 <= h, w <= 10^9•
1 <= horizontalCuts.length <= min(h - 1, 10^5)•
1 <= verticalCuts.length <= min(w - 1, 10^5)•
1 <= horizontalCuts[i] < h•
1 <= verticalCuts[i] < w• All the elements in
horizontalCuts are distinct.• All the elements in
verticalCuts are distinct.2022-07-03
376. Wiggle Subsequence
Topic: Array, Dynamic Programming, Greedy
Difficulty: Medium
Problem:
A wiggle sequence is a sequence where the differences between successive numbers strictly alternate between positive and negative. The first difference (if one exists) may be either positive or negative. A sequence with one element and a sequence with two non-equal elements are trivially wiggle sequences.
• For example,
• In contrast,
A subsequence is obtained by deleting some elements (possibly zero) from the original sequence, leaving the remaining elements in their original order.
Given an integer array
Example 1:
Example 2:
Example 3:
Constraints:
•
•
Follow up: Could you solve this in
376. Wiggle Subsequence
Topic: Array, Dynamic Programming, Greedy
Difficulty: Medium
Problem:
A wiggle sequence is a sequence where the differences between successive numbers strictly alternate between positive and negative. The first difference (if one exists) may be either positive or negative. A sequence with one element and a sequence with two non-equal elements are trivially wiggle sequences.
• For example,
[1, 7, 4, 9, 2, 5] is a wiggle sequence because the differences (6, -3, 5, -7, 3) alternate between positive and negative.• In contrast,
[1, 4, 7, 2, 5] and [1, 7, 4, 5, 5] are not wiggle sequences. The first is not because its first two differences are positive, and the second is not because its last difference is zero.A subsequence is obtained by deleting some elements (possibly zero) from the original sequence, leaving the remaining elements in their original order.
Given an integer array
nums, return the length of the longest wiggle subsequence of nums.Example 1:
Input: nums = [1,7,4,9,2,5]
Output: 6
Explanation: The entire sequence is a wiggle sequence with differences (6, -3, 5, -7, 3).
Example 2:
Input: nums = [1,17,5,10,13,15,10,5,16,8]
Output: 7
Explanation: There are several subsequences that achieve this length.
One is [1, 17, 10, 13, 10, 16, 8] with differences (16, -7, 3, -3, 6, -8).
Example 3:
Input: nums = [1,2,3,4,5,6,7,8,9]
Output: 2
Constraints:
•
1 <= nums.length <= 1000•
0 <= nums[i] <= 1000Follow up: Could you solve this in
O(n) time?2022-07-04
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^42022-07-05
128. Longest Consecutive Sequence
Topic: Array, Hash Table, Union Find
Difficulty: Medium
Problem:
Given an unsorted array of integers
You must write an algorithm that runs in
Example 1:
Example 2:
Constraints:
•
•
128. Longest Consecutive Sequence
Topic: Array, Hash Table, Union Find
Difficulty: Medium
Problem:
Given an unsorted array of integers
nums, return the length of the longest consecutive elements sequence.You must write an algorithm that runs in
O(n) time.Example 1:
Input: nums = [100,4,200,1,3,2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.
Example 2:
Input: nums = [0,3,7,2,5,8,4,6,0,1]
Output: 9
Constraints:
•
0 <= nums.length <= 10^5•
-10^9 <= nums[i] <= 10^92022-07-06
509. Fibonacci Number
Topic: Math, Dynamic Programming, Recursion, Memoization
Difficulty: Easy
Problem:
The Fibonacci numbers, commonly denoted
Given
Example 1:
Example 2:
Example 3:
Constraints:
•
509. Fibonacci Number
Topic: Math, Dynamic Programming, Recursion, Memoization
Difficulty: Easy
Problem:
The Fibonacci numbers, commonly denoted
F(n) form a sequence, called the Fibonacci sequence, such that each number is the sum of the two preceding ones, starting from 0 and 1. That is,F(0) = 0, F(1) = 1
F(n) = F(n - 1) + F(n - 2), for n > 1.
Given
n, calculate F(n).Example 1:
Input: n = 2
Output: 1
Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1.
Example 2:
Input: n = 3
Output: 2
Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2.
Example 3:
Input: n = 4
Output: 3
Explanation: F(4) = F(3) + F(2) = 2 + 1 = 3.
Constraints:
•
0 <= n <= 302022-07-07
97. Interleaving String
Topic: String, Dynamic Programming
Difficulty: Medium
Problem:
Given strings
An interleaving of two strings
•
•
•
• The interleaving is
Note:
Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/02/interleave.jpg
Example 2:
Example 3:
Constraints:
•
•
•
Follow up: Could you solve it using only
97. Interleaving String
Topic: String, Dynamic Programming
Difficulty: Medium
Problem:
Given strings
s1, s2, and s3, find whether s3 is formed by an interleaving of s1 and s2.An interleaving of two strings
s and t is a configuration where they are divided into non-empty substrings such that:•
s = s_1 + s_2 + ... + s_n•
t = t_1 + t_2 + ... + t_m•
|n - m| <= 1• The interleaving is
s_1 + t_1 + s_2 + t_2 + s_3 + t_3 + ... or t_1 + s_1 + t_2 + s_2 + t_3 + s_3 + ...Note:
a + b is the concatenation of strings a and b.Example 1:
Image: https://assets.leetcode.com/uploads/2020/09/02/interleave.jpg
Input: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
Output: true
Example 2:
Input: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
Output: false
Example 3:
Input: s1 = "", s2 = "", s3 = ""
Output: true
Constraints:
•
0 <= s1.length, s2.length <= 100•
0 <= s3.length <= 200•
s1, s2, and s3 consist of lowercase English letters.Follow up: Could you solve it using only
O(s2.length) additional memory space?2022-07-08
1473. Paint House III
Topic: Array, Dynamic Programming
Difficulty: Hard
Problem:
There is a row of
A neighborhood is a maximal group of continuous houses that are painted with the same color.
• For example:
Given an array
•
•
Return the minimum cost of painting all the remaining houses in such a way that there are exactly
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
•
•
•
1473. Paint House III
Topic: Array, Dynamic Programming
Difficulty: Hard
Problem:
There is a row of
m houses in a small city, each house must be painted with one of the n colors (labeled from 1 to n), some houses that have been painted last summer should not be painted again.A neighborhood is a maximal group of continuous houses that are painted with the same color.
• For example:
houses = [1,2,2,3,3,2,1,1] contains 5 neighborhoods [{1}, {2,2}, {3,3}, {2}, {1,1}].Given an array
houses, an m x n matrix cost and an integer target where:•
houses[i]: is the color of the house i, and 0 if the house is not painted yet.•
cost[i][j]: is the cost of paint the house i with the color j + 1.Return the minimum cost of painting all the remaining houses in such a way that there are exactly
target neighborhoods. If it is not possible, return -1.Example 1:
Input: houses = [0,0,0,0,0], cost = [[1,10],[10,1],[10,1],[1,10],[5,1]], m = 5, n = 2, target = 3
Output: 9
Explanation: Paint houses of this way [1,2,2,1,1]
This array contains target = 3 neighborhoods, [{1}, {2,2}, {1,1}].
Cost of paint all houses (1 + 1 + 1 + 1 + 5) = 9.
Example 2:
Input: houses = [0,2,1,2,0], cost = [[1,10],[10,1],[10,1],[1,10],[5,1]], m = 5, n = 2, target = 3
Output: 11
Explanation: Some houses are already painted, Paint the houses of this way [2,2,1,2,2]
This array contains target = 3 neighborhoods, [{2,2}, {1}, {2,2}].
Cost of paint the first and last house (10 + 1) = 11.
Example 3:
Input: houses = [3,1,2,3], cost = [[1,1,1],[1,1,1],[1,1,1],[1,1,1]], m = 4, n = 3, target = 3
Output: -1
Explanation: Houses are already painted with a total of 4 neighborhoods [{3},{1},{2},{3}] different of target = 3.
Constraints:
•
m == houses.length == cost.length•
n == cost[i].length•
1 <= m <= 100•
1 <= n <= 20•
1 <= target <= m•
0 <= houses[i] <= n•
1 <= cost[i][j] <= 10^42022-07-09
1696. Jump Game VI
Topic: Array, Dynamic Programming, Queue, Sliding Window, Heap (Priority Queue), Monotonic Queue
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
You are initially standing at index
You want to reach the last index of the array (index
Return the maximum score you can get.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1696. Jump Game VI
Topic: Array, Dynamic Programming, Queue, Sliding Window, Heap (Priority Queue), Monotonic Queue
Difficulty: Medium
Problem:
You are given a 0-indexed integer array
nums and an integer k.You are initially standing at index
0. In one move, you can jump at most k steps forward without going outside the boundaries of the array. That is, you can jump from index i to any index in the range [i + 1, min(n - 1, i + k)] inclusive.You want to reach the last index of the array (index
n - 1). Your score is the sum of all nums[j] for each index j you visited in the array.Return the maximum score you can get.
Example 1:
Input: nums = [1,-1,-2,4,-7,3], k = 2
Output: 7
Explanation: You can choose your jumps forming the subsequence [1,-1,4,3] (underlined above). The sum is 7.
Example 2:
Input: nums = [10,-5,-2,4,0,3], k = 3
Output: 17
Explanation: You can choose your jumps forming the subsequence [10,4,3] (underlined above). The sum is 17.
Example 3:
Input: nums = [1,-5,-20,4,-1,3,-6,-3], k = 2
Output: 0
Constraints:
•
1 <= nums.length, k <= 10^5•
-10^4 <= nums[i] <= 10^42022-07-10
746. Min Cost Climbing Stairs
Topic: Array, Dynamic Programming
Difficulty: Easy
Problem:
You are given an integer array
You can either start from the step with index
Return the minimum cost to reach the top of the floor.
Example 1:
Example 2:
Constraints:
•
•
746. Min Cost Climbing Stairs
Topic: Array, Dynamic Programming
Difficulty: Easy
Problem:
You are given an integer array
cost where cost[i] is the cost of i^th step on a staircase. Once you pay the cost, you can either climb one or two steps.You can either start from the step with index
0, or the step with index 1.Return the minimum cost to reach the top of the floor.
Example 1:
Input: cost = [10,15,20]
Output: 15
Explanation: You will start at index 1.
- Pay 15 and climb two steps to reach the top.
The total cost is 15.
Example 2:
Input: cost = [1,100,1,1,1,100,1,1,100,1]
Output: 6
Explanation: You will start at index 0.
- Pay 1 and climb two steps to reach index 2.
- Pay 1 and climb two steps to reach index 4.
- Pay 1 and climb two steps to reach index 6.
- Pay 1 and climb one step to reach index 7.
- Pay 1 and climb two steps to reach index 9.
- Pay 1 and climb one step to reach the top.
The total cost is 6.
Constraints:
•
2 <= cost.length <= 1000•
0 <= cost[i] <= 999