2022-07-27
114. Flatten Binary Tree to Linked List
Topic: Linked List, Stack, Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given the
• The "linked list" should use the same
• The "linked list" should be in the same order as a pre-order traversal of the binary tree.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/01/14/flaten.jpg
Example 2:
Example 3:
Constraints:
• The number of nodes in the tree is in the range
•
Follow up: Can you flatten the tree in-place (with
114. Flatten Binary Tree to Linked List
Topic: Linked List, Stack, Tree, Depth-First Search, Binary Tree
Difficulty: Medium
Problem:
Given the
root of a binary tree, flatten the tree into a "linked list":• The "linked list" should use the same
TreeNode class where the right child pointer points to the next node in the list and the left child pointer is always null.• The "linked list" should be in the same order as a pre-order traversal of the binary tree.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/01/14/flaten.jpg
Input: root = [1,2,5,3,4,null,6]
Output: [1,null,2,null,3,null,4,null,5,null,6]
Example 2:
Input: root = []
Output: []
Example 3:
Input: root = [0]
Output: [0]
Constraints:
• The number of nodes in the tree is in the range
[0, 2000].•
-100 <= Node.val <= 100Follow up: Can you flatten the tree in-place (with
O(1) extra space)?2022-07-28
242. Valid Anagram
Topic: Hash Table, String, Sorting
Difficulty: Easy
Problem:
Given two strings
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Example 1:
Example 2:
Constraints:
•
•
Follow up: What if the inputs contain Unicode characters? How would you adapt your solution to such a case?
242. Valid Anagram
Topic: Hash Table, String, Sorting
Difficulty: Easy
Problem:
Given two strings
s and t, return true if t is an anagram of s, and false otherwise.An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Example 1:
Input: s = "anagram", t = "nagaram"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: false
Constraints:
•
1 <= s.length, t.length <= 5 * 10^4•
s and t consist of lowercase English letters.Follow up: What if the inputs contain Unicode characters? How would you adapt your solution to such a case?
2022-07-29
890. Find and Replace Pattern
Topic: Array, Hash Table, String
Difficulty: Medium
Problem:
Given a list of strings
A word matches the pattern if there exists a permutation of letters
Recall that a permutation of letters is a bijection from letters to letters: every letter maps to another letter, and no two letters map to the same letter.
Example 1:
Example 2:
Constraints:
•
•
•
•
890. Find and Replace Pattern
Topic: Array, Hash Table, String
Difficulty: Medium
Problem:
Given a list of strings
words and a string pattern, return a list of words[i] that match pattern. You may return the answer in any order.A word matches the pattern if there exists a permutation of letters
p so that after replacing every letter x in the pattern with p(x), we get the desired word.Recall that a permutation of letters is a bijection from letters to letters: every letter maps to another letter, and no two letters map to the same letter.
Example 1:
Input: words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"
Output: ["mee","aqq"]
Explanation: "mee" matches the pattern because there is a permutation {a -> m, b -> e, ...}.
"ccc" does not match the pattern because {a -> c, b -> c, ...} is not a permutation, since a and b map to the same letter.
Example 2:
Input: words = ["a","b","c"], pattern = "a"
Output: ["a","b","c"]
Constraints:
•
1 <= pattern.length <= 20•
1 <= words.length <= 50•
words[i].length == pattern.length•
pattern and words[i] are lowercase English letters.2022-07-30
916. Word Subsets
Topic: Array, Hash Table, String
Difficulty: Medium
Problem:
You are given two string arrays
A string
• For example,
A string
Return an array of all the universal strings in
Example 1:
Example 2:
Constraints:
•
•
•
• All the strings of
916. Word Subsets
Topic: Array, Hash Table, String
Difficulty: Medium
Problem:
You are given two string arrays
words1 and words2.A string
b is a subset of string a if every letter in b occurs in a including multiplicity.• For example,
"wrr" is a subset of "warrior" but is not a subset of "world".A string
a from words1 is universal if for every string b in words2, b is a subset of a.Return an array of all the universal strings in
words1. You may return the answer in any order.Example 1:
Input: words1 = ["amazon","apple","facebook","google","leetcode"], words2 = ["e","o"]
Output: ["facebook","google","leetcode"]
Example 2:
Input: words1 = ["amazon","apple","facebook","google","leetcode"], words2 = ["l","e"]
Output: ["apple","google","leetcode"]
Constraints:
•
1 <= words1.length, words2.length <= 10^4•
1 <= words1[i].length, words2[i].length <= 10•
words1[i] and words2[i] consist only of lowercase English letters.• All the strings of
words1 are unique.2022-07-31
307. Range Sum Query - Mutable
Topic: Array, Design, Binary Indexed Tree, Segment Tree
Difficulty: Medium
Problem:
Given an integer array
1. Update the value of an element in
2. Calculate the sum of the elements of
Implement the
•
•
•
Example 1:
Constraints:
•
•
•
•
•
• At most
307. Range Sum Query - Mutable
Topic: Array, Design, Binary Indexed Tree, Segment Tree
Difficulty: Medium
Problem:
Given an integer array
nums, handle multiple queries of the following types:1. Update the value of an element in
nums.2. Calculate the sum of the elements of
nums between indices left and right inclusive where left <= right.Implement the
NumArray class:•
NumArray(int[] nums) Initializes the object with the integer array nums.•
void update(int index, int val) Updates the value of nums[index] to be val.•
int sumRange(int left, int right) Returns the sum of the elements of nums between indices left and right inclusive (i.e. nums[left] + nums[left + 1] + ... + nums[right]).Example 1:
Input
["NumArray", "sumRange", "update", "sumRange"]
[[[1, 3, 5]], [0, 2], [1, 2], [0, 2]]
Output
[null, 9, null, 8]
Explanation
NumArray numArray = new NumArray([1, 3, 5]);
numArray.sumRange(0, 2); // return 1 + 3 + 5 = 9
numArray.update(1, 2); // nums = [1, 2, 5]
numArray.sumRange(0, 2); // return 1 + 2 + 5 = 8
Constraints:
•
1 <= nums.length <= 3 * 10^4•
-100 <= nums[i] <= 100•
0 <= index < nums.length•
-100 <= val <= 100•
0 <= left <= right < nums.length• At most
3 * 10^4 calls will be made to update and sumRange.2022-08-01
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 <= 1002022-08-02
378. Kth Smallest Element in a Sorted Matrix
Topic: Array, Binary Search, Sorting, Heap (Priority Queue), Matrix
Difficulty: Medium
Problem:
Given an
Note that it is the
You must find a solution with a memory complexity better than
Example 1:
Example 2:
Constraints:
•
•
•
• All the rows and columns of
•
Follow up:
• Could you solve the problem with a constant memory (i.e.,
• Could you solve the problem in
378. Kth Smallest Element in a Sorted Matrix
Topic: Array, Binary Search, Sorting, Heap (Priority Queue), Matrix
Difficulty: Medium
Problem:
Given an
n x n matrix where each of the rows and columns is sorted in ascending order, return the k^th smallest element in the matrix.Note that it is the
k^th smallest element in the sorted order, not the k^th distinct element.You must find a solution with a memory complexity better than
O(n^2).Example 1:
Input: matrix = [[1,5,9],[10,11,13],[12,13,15]], k = 8
Output: 13
Explanation: The elements in the matrix are [1,5,9,10,11,12,13,13,15], and the 8^th smallest number is 13
Example 2:
Input: matrix = [[-5]], k = 1
Output: -5
Constraints:
•
n == matrix.length == matrix[i].length•
1 <= n <= 300•
-10^9 <= matrix[i][j] <= 10^9• All the rows and columns of
matrix are guaranteed to be sorted in non-decreasing order.•
1 <= k <= n^2Follow up:
• Could you solve the problem with a constant memory (i.e.,
O(1) memory complexity)?• Could you solve the problem in
O(n) time complexity? The solution may be too advanced for an interview but you may find reading this paper fun.2022-08-03
729. My Calendar I
Topic: Binary Search, Design, Segment Tree, Ordered Set
Difficulty: Medium
Problem:
You are implementing a program to use as your calendar. We can add a new event if adding the event will not cause a double booking.
A double booking happens when two events have some non-empty intersection (i.e., some moment is common to both events.).
The event can be represented as a pair of integers
Implement the
•
•
Example 1:
Constraints:
•
• At most
729. My Calendar I
Topic: Binary Search, Design, Segment Tree, Ordered Set
Difficulty: Medium
Problem:
You are implementing a program to use as your calendar. We can add a new event if adding the event will not cause a double booking.
A double booking happens when two events have some non-empty intersection (i.e., some moment is common to both events.).
The event can be represented as a pair of integers
start and end that represents a booking on the half-open interval [start, end), the range of real numbers x such that start <= x < end.Implement the
MyCalendar class:•
MyCalendar() Initializes the calendar object.•
boolean book(int start, int end) Returns true if the event can be added to the calendar successfully without causing a double booking. Otherwise, return false and do not add the event to the calendar.Example 1:
Input
["MyCalendar", "book", "book", "book"]
[[], [10, 20], [15, 25], [20, 30]]
Output
[null, true, false, true]
Explanation
MyCalendar myCalendar = new MyCalendar();
myCalendar.book(10, 20); // return True
myCalendar.book(15, 25); // return False, It can not be booked because time 15 is already booked by another event.
myCalendar.book(20, 30); // return True, The event can be booked, as the first event takes every time less than 20, but not including 20.
Constraints:
•
0 <= start < end <= 10^9• At most
1000 calls will be made to book.2022-08-04
858. Mirror Reflection
Topic: Math, Geometry
Difficulty: Medium
Problem:
There is a special square room with mirrors on each of the four walls. Except for the southwest corner, there are receptors on each of the remaining corners, numbered
The square room has walls of length
Given the two integers
The test cases are guaranteed so that the ray will meet a receptor eventually.
Example 1:
Image: https://s3-lc-upload.s3.amazonaws.com/uploads/2018/06/18/reflection.png
Example 2:
Constraints:
•
858. Mirror Reflection
Topic: Math, Geometry
Difficulty: Medium
Problem:
There is a special square room with mirrors on each of the four walls. Except for the southwest corner, there are receptors on each of the remaining corners, numbered
0, 1, and 2.The square room has walls of length
p and a laser ray from the southwest corner first meets the east wall at a distance q from the 0^th receptor.Given the two integers
p and q, return the number of the receptor that the ray meets first.The test cases are guaranteed so that the ray will meet a receptor eventually.
Example 1:
Image: https://s3-lc-upload.s3.amazonaws.com/uploads/2018/06/18/reflection.png
Input: p = 2, q = 1
Output: 2
Explanation: The ray meets receptor 2 the first time it gets reflected back to the left wall.
Example 2:
Input: p = 3, q = 1
Output: 1
Constraints:
•
1 <= q <= p <= 10002022-08-05
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?
2022-08-06
458. Poor Pigs
Topic: Math, Dynamic Programming, Combinatorics
Difficulty: Hard
Problem:
There are
You can feed the pigs according to these steps:
1. Choose some live pigs to feed.
2. For each pig, choose which buckets to feed it. The pig will consume all the chosen buckets simultaneously and will take no time.
3. Wait for
4. After
5. Repeat this process until you run out of time.
Given
Example 1:
Example 2:
Example 3:
Constraints:
•
•
458. Poor Pigs
Topic: Math, Dynamic Programming, Combinatorics
Difficulty: Hard
Problem:
There are
buckets buckets of liquid, where exactly one of the buckets is poisonous. To figure out which one is poisonous, you feed some number of (poor) pigs the liquid to see whether they will die or not. Unfortunately, you only have minutesToTest minutes to determine which bucket is poisonous.You can feed the pigs according to these steps:
1. Choose some live pigs to feed.
2. For each pig, choose which buckets to feed it. The pig will consume all the chosen buckets simultaneously and will take no time.
3. Wait for
minutesToDie minutes. You may not feed any other pigs during this time.4. After
minutesToDie minutes have passed, any pigs that have been fed the poisonous bucket will die, and all others will survive.5. Repeat this process until you run out of time.
Given
buckets, minutesToDie, and minutesToTest, return the minimum number of pigs needed to figure out which bucket is poisonous within the allotted time.Example 1:
Input: buckets = 1000, minutesToDie = 15, minutesToTest = 60
Output: 5
Example 2:
Input: buckets = 4, minutesToDie = 15, minutesToTest = 15
Output: 2
Example 3:
Input: buckets = 4, minutesToDie = 15, minutesToTest = 30
Output: 2
Constraints:
•
1 <= buckets <= 1000•
1 <= minutesToDie <= minutesToTest <= 1002022-08-07
1220. Count Vowels Permutation
Topic: Dynamic Programming
Difficulty: Hard
Problem:
Given an integer
• Each character is a lower case vowel (
• Each vowel
• Each vowel
• Each vowel
• Each vowel
• Each vowel
Since the answer may be too large, return it modulo
Example 1:
Example 2:
Example 3:
Constraints:
•
1220. Count Vowels Permutation
Topic: Dynamic Programming
Difficulty: Hard
Problem:
Given an integer
n, your task is to count how many strings of length n can be formed under the following rules:• Each character is a lower case vowel (
'a', 'e', 'i', 'o', 'u')• Each vowel
'a' may only be followed by an 'e'.• Each vowel
'e' may only be followed by an 'a' or an 'i'.• Each vowel
'i' may not be followed by another 'i'.• Each vowel
'o' may only be followed by an 'i' or a 'u'.• Each vowel
'u' may only be followed by an 'a'.Since the answer may be too large, return it modulo
10^9 + 7.Example 1:
Input: n = 1
Output: 5
Explanation: All possible strings are: "a", "e", "i" , "o" and "u".
Example 2:
Input: n = 2
Output: 10
Explanation: All possible strings are: "ae", "ea", "ei", "ia", "ie", "io", "iu", "oi", "ou" and "ua".
Example 3:
Input: n = 5
Output: 68
Constraints:
•
1 <= n <= 2 * 10^42022-08-08
300. Longest Increasing Subsequence
Topic: Array, Binary Search, Dynamic Programming
Difficulty: Medium
Problem:
Given an integer array
A subsequence is a sequence that can be derived from an array by deleting some or no elements without changing the order of the remaining elements. For example,
Example 1:
Example 2:
Example 3:
Constraints:
•
•
Follow up: Can you come up with an algorithm that runs in
300. Longest Increasing Subsequence
Topic: Array, Binary Search, Dynamic Programming
Difficulty: Medium
Problem:
Given an integer array
nums, return the length of the longest strictly increasing subsequence.A subsequence is a sequence that can be derived from an array by deleting some or no elements without changing the order of the remaining elements. For example,
[3,6,2,7] is a subsequence of the array [0,3,1,6,2,2,7].Example 1:
Input: nums = [10,9,2,5,3,7,101,18]
Output: 4
Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.
Example 2:
Input: nums = [0,1,0,3,2,3]
Output: 4
Example 3:
Input: nums = [7,7,7,7,7,7,7]
Output: 1
Constraints:
•
1 <= nums.length <= 2500•
-10^4 <= nums[i] <= 10^4Follow up: Can you come up with an algorithm that runs in
O(n log(n)) time complexity?2022-08-09
823. Binary Trees With Factors
Topic: Array, Hash Table, Dynamic Programming
Difficulty: Medium
Problem:
Given an array of unique integers,
We make a binary tree using these integers, and each number may be used for any number of times. Each non-leaf node's value should be equal to the product of the values of its children.
Return the number of binary trees we can make. The answer may be too large so return the answer modulo
Example 1:
Example 2:
Constraints:
•
•
• All the values of
823. Binary Trees With Factors
Topic: Array, Hash Table, Dynamic Programming
Difficulty: Medium
Problem:
Given an array of unique integers,
arr, where each integer arr[i] is strictly greater than 1.We make a binary tree using these integers, and each number may be used for any number of times. Each non-leaf node's value should be equal to the product of the values of its children.
Return the number of binary trees we can make. The answer may be too large so return the answer modulo
10^9 + 7.Example 1:
Input: arr = [2,4]
Output: 3
Explanation: We can make these trees: [2], [4], [4, 2, 2]
Example 2:
Input: arr = [2,4,5,10]
Output: 7
Explanation: We can make these trees: [2], [4], [5], [10], [4, 2, 2], [10, 2, 5], [10, 5, 2].
Constraints:
•
1 <= arr.length <= 1000•
2 <= arr[i] <= 10^9• All the values of
arr are unique.2022-08-10
108. Convert Sorted Array to Binary Search Tree
Topic: Array, Divide and Conquer, Tree, Binary Search Tree, Binary Tree
Difficulty: Easy
Problem:
Given an integer array
A height-balanced binary tree is a binary tree in which the depth of the two subtrees of every node never differs by more than one.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/02/18/btree1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/02/18/btree.jpg
Constraints:
•
•
•
108. Convert Sorted Array to Binary Search Tree
Topic: Array, Divide and Conquer, Tree, Binary Search Tree, Binary Tree
Difficulty: Easy
Problem:
Given an integer array
nums where the elements are sorted in ascending order, convert it to a height-balanced binary search tree.A height-balanced binary tree is a binary tree in which the depth of the two subtrees of every node never differs by more than one.
Example 1:
Image: https://assets.leetcode.com/uploads/2021/02/18/btree1.jpg
Input: nums = [-10,-3,0,5,9]
Output: [0,-3,9,-10,null,5]
Explanation: [0,-10,5,null,-3,null,9] is also accepted:
Image: [https://assets.leetcode.com/uploads/2021/02/18/btree2.jpg](https://assets.leetcode.com/uploads/2021/02/18/btree2.jpg)
Example 2:
Image: https://assets.leetcode.com/uploads/2021/02/18/btree.jpg
Input: nums = [1,3]
Output: [3,1]
Explanation: [1,null,3] and [3,1] are both height-balanced BSTs.
Constraints:
•
1 <= nums.length <= 10^4•
-10^4 <= nums[i] <= 10^4•
nums is sorted in a strictly increasing order.2022-08-11
98. Validate Binary Search Tree
Topic: Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Medium
Problem:
Given the
A valid BST is defined as follows:
• The left subtree of a node contains only nodes with keys less than the node's key.
• The right subtree of a node contains only nodes with keys greater than the node's key.
• Both the left and right subtrees must also be binary search trees.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/12/01/tree1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/12/01/tree2.jpg
Constraints:
• The number of nodes in the tree is in the range
•
98. Validate Binary Search Tree
Topic: Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Medium
Problem:
Given the
root of a binary tree, determine if it is a valid binary search tree (BST).A valid BST is defined as follows:
• The left subtree of a node contains only nodes with keys less than the node's key.
• The right subtree of a node contains only nodes with keys greater than the node's key.
• Both the left and right subtrees must also be binary search trees.
Example 1:
Image: https://assets.leetcode.com/uploads/2020/12/01/tree1.jpg
Input: root = [2,1,3]
Output: true
Example 2:
Image: https://assets.leetcode.com/uploads/2020/12/01/tree2.jpg
Input: root = [5,1,4,null,null,3,6]
Output: false
Explanation: The root node's value is 5 but its right child's value is 4.
Constraints:
• The number of nodes in the tree is in the range
[1, 10^4].•
-2^31 <= Node.val <= 2^31 - 12022-08-12
235. Lowest Common Ancestor of a Binary Search Tree
Topic: Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Easy
Problem:
Given a binary search tree (BST), find the lowest common ancestor (LCA) node of two given nodes in the BST.
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes
Example 1:
Image: https://assets.leetcode.com/uploads/2018/12/14/binarysearchtree_improved.png
Example 2:
Image: https://assets.leetcode.com/uploads/2018/12/14/binarysearchtree_improved.png
Example 3:
Constraints:
• The number of nodes in the tree is in the range
•
• All
•
•
235. Lowest Common Ancestor of a Binary Search Tree
Topic: Tree, Depth-First Search, Binary Search Tree, Binary Tree
Difficulty: Easy
Problem:
Given a binary search tree (BST), find the lowest common ancestor (LCA) node of two given nodes in the BST.
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes
p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).”Example 1:
Image: https://assets.leetcode.com/uploads/2018/12/14/binarysearchtree_improved.png
Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
Output: 6
Explanation: The LCA of nodes 2 and 8 is 6.
Example 2:
Image: https://assets.leetcode.com/uploads/2018/12/14/binarysearchtree_improved.png
Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
Output: 2
Explanation: The LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.
Example 3:
Input: root = [2,1], p = 2, q = 1
Output: 2
Constraints:
• The number of nodes in the tree is in the range
[2, 10^5].•
-10^9 <= Node.val <= 10^9• All
Node.val are unique.•
p != q•
p and q will exist in the BST.2022-08-13
30. Substring with Concatenation of All Words
Topic: Hash Table, String, Sliding Window
Difficulty: Hard
Problem:
You are given a string
You can return the answer in any order.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
30. Substring with Concatenation of All Words
Topic: Hash Table, String, Sliding Window
Difficulty: Hard
Problem:
You are given a string
s and an array of strings words of the same length. Return all starting indices of substring(s) in s that is a concatenation of each word in words exactly once, in any order, and without any intervening characters.You can return the answer in any order.
Example 1:
Input: s = "barfoothefoobarman", words = ["foo","bar"]
Output: [0,9]
Explanation: Substrings starting at index 0 and 9 are "barfoo" and "foobar" respectively.
The output order does not matter, returning [9,0] is fine too.
Example 2:
Input: s = "wordgoodgoodgoodbestword", words = ["word","good","best","word"]
Output: []
Example 3:
Input: s = "barfoofoobarthefoobarman", words = ["bar","foo","the"]
Output: [6,9,12]
Constraints:
•
1 <= s.length <= 10^4•
1 <= words.length <= 5000•
1 <= words[i].length <= 30•
s and words[i] consist of lowercase English letters.2022-08-14
126. Word Ladder II
Topic: Hash Table, String, Backtracking, Breadth-First Search
Difficulty: Hard
Problem:
A transformation sequence from word
• Every adjacent pair of words differs by a single letter.
• Every
•
Given two words,
Example 1:
Example 2:
Constraints:
•
•
•
•
•
•
• All the words in
126. Word Ladder II
Topic: Hash Table, String, Backtracking, Breadth-First Search
Difficulty: Hard
Problem:
A transformation sequence from word
beginWord to word endWord using a dictionary wordList is a sequence of words beginWord -> s_1 -> s_2 -> ... -> s_k such that:• Every adjacent pair of words differs by a single letter.
• Every
s_i for 1 <= i <= k is in wordList. Note that beginWord does not need to be in wordList.•
s_k == endWordGiven two words,
beginWord and endWord, and a dictionary wordList, return all the shortest transformation sequences from beginWord to endWord, or an empty list if no such sequence exists. Each sequence should be returned as a list of the words [beginWord, s_1, s_2, ..., s_k].Example 1:
Input: beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"]
Output: [["hit","hot","dot","dog","cog"],["hit","hot","lot","log","cog"]]
Explanation: There are 2 shortest transformation sequences:
"hit" -> "hot" -> "dot" -> "dog" -> "cog"
"hit" -> "hot" -> "lot" -> "log" -> "cog"
Example 2:
Input: beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log"]
Output: []
Explanation: The endWord "cog" is not in wordList, therefore there is no valid transformation sequence.
Constraints:
•
1 <= beginWord.length <= 5•
endWord.length == beginWord.length•
1 <= wordList.length <= 500•
wordList[i].length == beginWord.length•
beginWord, endWord, and wordList[i] consist of lowercase English letters.•
beginWord != endWord• All the words in
wordList are unique.2022-08-15
13. Roman to Integer
Topic: Hash Table, Math, String
Difficulty: Easy
Problem:
Roman numerals are represented by seven different symbols:
For example,
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not
•
•
•
Given a roman numeral, convert it to an integer.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
• It is guaranteed that
13. Roman to Integer
Topic: Hash Table, Math, String
Difficulty: Easy
Problem:
Roman numerals are represented by seven different symbols:
I, V, X, L, C, D and M.Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
For example,
2 is written as II in Roman numeral, just two ones added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II.Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not
IIII. Instead, the number four is written as IV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX. There are six instances where subtraction is used:•
I can be placed before V (5) and X (10) to make 4 and 9.•
X can be placed before L (50) and C (100) to make 40 and 90.•
C can be placed before D (500) and M (1000) to make 400 and 900.Given a roman numeral, convert it to an integer.
Example 1:
Input: s = "III"
Output: 3
Explanation: III = 3.
Example 2:
Input: s = "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.
Example 3:
Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
Constraints:
•
1 <= s.length <= 15•
s contains only the characters ('I', 'V', 'X', 'L', 'C', 'D', 'M').• It is guaranteed that
s is a valid roman numeral in the range [1, 3999].