2023-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.
2023-09-18
1337. The K Weakest Rows in a Matrix
Topic: Array, Binary Search, Sorting, Heap (Priority Queue), Matrix
Difficulty: Easy
Problem:
You are given an
A row
• The number of soldiers in row
• Both rows have the same number of soldiers and
Return the indices of the
Example 1:
Example 2:
Constraints:
•
•
•
•
•
1337. The K Weakest Rows in a Matrix
Topic: Array, Binary Search, Sorting, Heap (Priority Queue), Matrix
Difficulty: Easy
Problem:
You are given an
m x n binary matrix mat of 1's (representing soldiers) and 0's (representing civilians). The soldiers are positioned in front of the civilians. That is, all the 1's will appear to the left of all the 0's in each row.A row
i is weaker than a row j if one of the following is true:• The number of soldiers in row
i is less than the number of soldiers in row j.• Both rows have the same number of soldiers and
i < j.Return the indices of the
k weakest rows in the matrix ordered from weakest to strongest.Example 1:
Input: mat =
[[1,1,0,0,0],
[1,1,1,1,0],
[1,0,0,0,0],
[1,1,0,0,0],
[1,1,1,1,1]],
k = 3
Output: [2,0,3]
Explanation:
The number of soldiers in each row is:
- Row 0: 2
- Row 1: 4
- Row 2: 1
- Row 3: 2
- Row 4: 5
The rows ordered from weakest to strongest are [2,0,3,1,4].
Example 2:
Input: mat =
[[1,0,0,0],
[1,1,1,1],
[1,0,0,0],
[1,0,0,0]],
k = 2
Output: [0,2]
Explanation:
The number of soldiers in each row is:
- Row 0: 1
- Row 1: 4
- Row 2: 1
- Row 3: 1
The rows ordered from weakest to strongest are [0,2,3,1].
Constraints:
•
m == mat.length•
n == mat[i].length•
2 <= n, m <= 100•
1 <= k <= m•
matrix[i][j] is either 0 or 1.2023-09-19
287. Find the Duplicate Number
Topic: Array, Two Pointers, Binary Search, Bit Manipulation
Difficulty: Medium
Problem:
Given an array of integers
There is only one repeated number in
You must solve the problem without modifying the array
Example 1:
Example 2:
Constraints:
•
•
•
• All the integers in
Follow up:
• How can we prove that at least one duplicate number must exist in
• Can you solve the problem in linear runtime complexity?
287. Find the Duplicate Number
Topic: Array, Two Pointers, Binary Search, Bit Manipulation
Difficulty: Medium
Problem:
Given an array of integers
nums containing n + 1 integers where each integer is in the range [1, n] inclusive.There is only one repeated number in
nums, return this repeated number.You must solve the problem without modifying the array
nums and uses only constant extra space.Example 1:
Input: nums = [1,3,4,2,2]
Output: 2
Example 2:
Input: nums = [3,1,3,4,2]
Output: 3
Constraints:
•
1 <= n <= 10^5•
nums.length == n + 1•
1 <= nums[i] <= n• All the integers in
nums appear only once except for precisely one integer which appears two or more times.Follow up:
• How can we prove that at least one duplicate number must exist in
nums?• Can you solve the problem in linear runtime complexity?
2023-09-20
1658. Minimum Operations to Reduce X to Zero
Topic: Array, Hash Table, Binary Search, Sliding Window, Prefix Sum
Difficulty: Medium
Problem:
You are given an integer array
Return the minimum number of operations to reduce
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1658. Minimum Operations to Reduce X to Zero
Topic: Array, Hash Table, Binary Search, Sliding Window, Prefix Sum
Difficulty: Medium
Problem:
You are given an integer array
nums and an integer x. In one operation, you can either remove the leftmost or the rightmost element from the array nums and subtract its value from x. Note that this modifies the array for future operations.Return the minimum number of operations to reduce
x to exactly 0 if it is possible, otherwise, return -1.Example 1:
Input: nums = [1,1,4,2,3], x = 5
Output: 2
Explanation: The optimal solution is to remove the last two elements to reduce x to zero.
Example 2:
Input: nums = [5,6,7,8,9], x = 4
Output: -1
Example 3:
Input: nums = [3,2,20,1,1,3], x = 10
Output: 5
Explanation: The optimal solution is to remove the last three elements and the first two elements (5 operations in total) to reduce x to zero.
Constraints:
•
1 <= nums.length <= 10^5•
1 <= nums[i] <= 10^4•
1 <= x <= 10^92023-09-21
4. Median of Two Sorted Arrays
Topic: Array, Binary Search, Divide and Conquer
Difficulty: Hard
Problem:
Given two sorted arrays
The overall run time complexity should be
Example 1:
Example 2:
Constraints:
•
•
•
•
•
•
4. Median of Two Sorted Arrays
Topic: Array, Binary Search, Divide and Conquer
Difficulty: Hard
Problem:
Given two sorted arrays
nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.The overall run time complexity should be
O(log (m+n)).Example 1:
Input: nums1 = [1,3], nums2 = [2]
Output: 2.00000
Explanation: merged array = [1,2,3] and median is 2.
Example 2:
Input: nums1 = [1,2], nums2 = [3,4]
Output: 2.50000
Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
Constraints:
•
nums1.length == m•
nums2.length == n•
0 <= m <= 1000•
0 <= n <= 1000•
1 <= m + n <= 2000•
-10^6 <= nums1[i], nums2[i] <= 10^62023-09-22
392. Is Subsequence
Topic: Two Pointers, String, Dynamic Programming
Difficulty: Easy
Problem:
Given two strings
A subsequence of a string is a new string that is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (i.e.,
Example 1:
Example 2:
Constraints:
•
•
•
Follow up: Suppose there are lots of incoming
392. Is Subsequence
Topic: Two Pointers, String, Dynamic Programming
Difficulty: Easy
Problem:
Given two strings
s and t, return true if s is a subsequence of t, or false otherwise.A subsequence of a string is a new string that is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (i.e.,
"ace" is a subsequence of "abcde" while "aec" is not).Example 1:
Input: s = "abc", t = "ahbgdc"
Output: true
Example 2:
Input: s = "axc", t = "ahbgdc"
Output: false
Constraints:
•
0 <= s.length <= 100•
0 <= t.length <= 10^4•
s and t consist only of lowercase English letters.Follow up: Suppose there are lots of incoming
s, say s_1, s_2, ..., s_k where k >= 10^9, and you want to check one by one to see if t has its subsequence. In this scenario, how would you change your code?2023-09-23
1048. Longest String Chain
Topic: Array, Hash Table, Two Pointers, String, Dynamic Programming
Difficulty: Medium
Problem:
You are given an array of
• For example,
A word chain is a sequence of words
Return the length of the longest possible word chain with words chosen from the given list of
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1048. Longest String Chain
Topic: Array, Hash Table, Two Pointers, String, Dynamic Programming
Difficulty: Medium
Problem:
You are given an array of
words where each word consists of lowercase English letters.word_A is a predecessor of word_B if and only if we can insert exactly one letter anywhere in word_A without changing the order of the other characters to make it equal to word_B.• For example,
"abc" is a predecessor of "abac", while "cba" is not a predecessor of "bcad".A word chain is a sequence of words
[word_1, word_2, ..., word_k] with k >= 1, where word_1 is a predecessor of word_2, word_2 is a predecessor of word_3, and so on. A single word is trivially a word chain with k == 1.Return the length of the longest possible word chain with words chosen from the given list of
words.Example 1:
Input: words = ["a","b","ba","bca","bda","bdca"]
Output: 4
Explanation: One of the longest word chains is ["a","ba","bda","bdca"].
Example 2:
Input: words = ["xbc","pcxbcf","xb","cxbc","pcxbc"]
Output: 5
Explanation: All the words can be put in a word chain ["xb", "xbc", "cxbc", "pcxbc", "pcxbcf"].
Example 3:
Input: words = ["abcd","dbqca"]
Output: 1
Explanation: The trivial word chain ["abcd"] is one of the longest word chains.
["abcd","dbqca"] is not a valid word chain because the ordering of the letters is changed.
Constraints:
•
1 <= words.length <= 1000•
1 <= words[i].length <= 16•
words[i] only consists of lowercase English letters.2023-09-24
799. Champagne Tower
Topic: Dynamic Programming
Difficulty: Medium
Problem:
We stack glasses in a pyramid, where the first row has
Then, some champagne is poured into the first glass at the top. When the topmost glass is full, any excess liquid poured will fall equally to the glass immediately to the left and right of it. When those glasses become full, any excess champagne will fall equally to the left and right of those glasses, and so on. (A glass at the bottom row has its excess champagne fall on the floor.)
For example, after one cup of champagne is poured, the top most glass is full. After two cups of champagne are poured, the two glasses on the second row are half full. After three cups of champagne are poured, those two cups become full - there are 3 full glasses total now. After four cups of champagne are poured, the third row has the middle glass half full, and the two outside glasses are a quarter full, as pictured below.
Image: https://s3-lc-upload.s3.amazonaws.com/uploads/2018/03/09/tower.png
Now after pouring some non-negative integer cups of champagne, return how full the
Example 1:
Example 2:
Example 3:
Constraints:
•
•
799. Champagne Tower
Topic: Dynamic Programming
Difficulty: Medium
Problem:
We stack glasses in a pyramid, where the first row has
1 glass, the second row has 2 glasses, and so on until the 100^th row. Each glass holds one cup of champagne.Then, some champagne is poured into the first glass at the top. When the topmost glass is full, any excess liquid poured will fall equally to the glass immediately to the left and right of it. When those glasses become full, any excess champagne will fall equally to the left and right of those glasses, and so on. (A glass at the bottom row has its excess champagne fall on the floor.)
For example, after one cup of champagne is poured, the top most glass is full. After two cups of champagne are poured, the two glasses on the second row are half full. After three cups of champagne are poured, those two cups become full - there are 3 full glasses total now. After four cups of champagne are poured, the third row has the middle glass half full, and the two outside glasses are a quarter full, as pictured below.
Image: https://s3-lc-upload.s3.amazonaws.com/uploads/2018/03/09/tower.png
Now after pouring some non-negative integer cups of champagne, return how full the
j^th glass in the i^th row is (both i and j are 0-indexed.)Example 1:
Input: poured = 1, query_row = 1, query_glass = 1
Output: 0.00000
Explanation: We poured 1 cup of champange to the top glass of the tower (which is indexed as (0, 0)). There will be no excess liquid so all the glasses under the top glass will remain empty.
Example 2:
Input: poured = 2, query_row = 1, query_glass = 1
Output: 0.50000
Explanation: We poured 2 cups of champange to the top glass of the tower (which is indexed as (0, 0)). There is one cup of excess liquid. The glass indexed as (1, 0) and the glass indexed as (1, 1) will share the excess liquid equally, and each will get half cup of champange.
Example 3:
Input: poured = 100000009, query_row = 33, query_glass = 17
Output: 1.00000
Constraints:
•
0 <= poured <= 10^9•
0 <= query_glass <= query_row < 1002023-09-25
389. Find the Difference
Topic: Hash Table, String, Bit Manipulation, Sorting
Difficulty: Easy
Problem:
You are given two strings
String
Return the letter that was added to
Example 1:
Example 2:
Constraints:
•
•
•
389. Find the Difference
Topic: Hash Table, String, Bit Manipulation, Sorting
Difficulty: Easy
Problem:
You are given two strings
s and t.String
t is generated by random shuffling string s and then add one more letter at a random position.Return the letter that was added to
t.Example 1:
Input: s = "abcd", t = "abcde"
Output: "e"
Explanation: 'e' is the letter that was added.
Example 2:
Input: s = "", t = "y"
Output: "y"
Constraints:
•
0 <= s.length <= 1000•
t.length == s.length + 1•
s and t consist of lowercase English letters.2023-09-26
316. Remove Duplicate Letters
Topic: String, Stack, Greedy, Monotonic Stack
Difficulty: Medium
Problem:
Given a string
Example 1:
Example 2:
Constraints:
•
•
Note: This question is the same as 1081: <https://leetcode.com/problems/smallest-subsequence-of-distinct-characters/>
316. Remove Duplicate Letters
Topic: String, Stack, Greedy, Monotonic Stack
Difficulty: Medium
Problem:
Given a string
s, remove duplicate letters so that every letter appears once and only once. You must make sure your result is the smallest in lexicographical order among all possible results.Example 1:
Input: s = "bcabc"
Output: "abc"
Example 2:
Input: s = "cbacdcbc"
Output: "acdb"
Constraints:
•
1 <= s.length <= 10^4•
s consists of lowercase English letters.Note: This question is the same as 1081: <https://leetcode.com/problems/smallest-subsequence-of-distinct-characters/>
2023-09-27
880. Decoded String at Index
Topic: String, Stack
Difficulty: Medium
Problem:
You are given an encoded string
• If the character read is a letter, that letter is written onto the tape.
• If the character read is a digit
Given an integer
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
• It is guaranteed that
• The decoded string is guaranteed to have less than
880. Decoded String at Index
Topic: String, Stack
Difficulty: Medium
Problem:
You are given an encoded string
s. To decode the string to a tape, the encoded string is read one character at a time and the following steps are taken:• If the character read is a letter, that letter is written onto the tape.
• If the character read is a digit
d, the entire current tape is repeatedly written d - 1 more times in total.Given an integer
k, return the k^th letter (1-indexed) in the decoded string.Example 1:
Input: s = "leet2code3", k = 10
Output: "o"
Explanation: The decoded string is "leetleetcodeleetleetcodeleetleetcode".
The 10^th letter in the string is "o".
Example 2:
Input: s = "ha22", k = 5
Output: "h"
Explanation: The decoded string is "hahahaha".
The 5^th letter is "h".
Example 3:
Input: s = "a2345678999999999999999", k = 1
Output: "a"
Explanation: The decoded string is "a" repeated 8301530446056247680 times.
The 1^st letter is "a".
Constraints:
•
2 <= s.length <= 100•
s consists of lowercase English letters and digits 2 through 9.•
s starts with a letter.•
1 <= k <= 10^9• It is guaranteed that
k is less than or equal to the length of the decoded string.• The decoded string is guaranteed to have less than
2^63 letters.