2022-05-19
329. Longest Increasing Path in a Matrix
Topic: Dynamic Programming, Depth-First Search, Breadth-First Search, Graph, Topological Sort, Memoization
Difficulty: Hard
Problem:
Given an
From each cell, you can either move in four directions: left, right, up, or down. You may not move diagonally or move outside the boundary (i.e., wrap-around is not allowed).
Example 1:
Image: https://assets.leetcode.com/uploads/2021/01/05/grid1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2021/01/27/tmp-grid.jpg
Example 3:
Constraints:
•
•
•
•
329. Longest Increasing Path in a Matrix
Topic: Dynamic Programming, Depth-First Search, Breadth-First Search, Graph, Topological Sort, Memoization
Difficulty: Hard
Problem:
Given an
m x n integers matrix, return the length of the longest increasing path in matrix.From each cell, you can either move in four directions: left, right, up, or down. You may not move diagonally or move outside the boundary (i.e., wrap-around is not allowed).
Example 1:
Image: https://assets.leetcode.com/uploads/2021/01/05/grid1.jpg
Input: matrix = [[9,9,4],[6,6,8],[2,1,1]]
Output: 4
Explanation: The longest increasing path is [1, 2, 6, 9].
Example 2:
Image: https://assets.leetcode.com/uploads/2021/01/27/tmp-grid.jpg
Input: matrix = [[3,4,5],[3,2,6],[2,2,1]]
Output: 4
Explanation: The longest increasing path is [3, 4, 5, 6]. Moving diagonally is not allowed.
Example 3:
Input: matrix = [[1]]
Output: 1
Constraints:
•
m == matrix.length•
n == matrix[i].length•
1 <= m, n <= 200•
0 <= matrix[i][j] <= 2^31 - 12022-05-20
63. Unique Paths II
Topic: Array, Dynamic Programming, Matrix
Difficulty: Medium
Problem:
You are given an
An obstacle and space are marked as
Return the number of possible unique paths that the robot can take to reach the bottom-right corner.
The testcases are generated so that the answer will be less than or equal to
Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/04/robot1.jpg
Example 2:
Image: https://assets.leetcode.com/uploads/2020/11/04/robot2.jpg
Constraints:
•
•
•
•
63. Unique Paths II
Topic: Array, Dynamic Programming, Matrix
Difficulty: Medium
Problem:
You are given an
m x n integer array grid. There is a robot 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.An obstacle and space are marked as
1 or 0 respectively in grid. A path that the robot takes cannot include any square that is an obstacle.Return the number of possible unique paths that the robot can take to reach the bottom-right corner.
The testcases are generated so that the answer will be less than or equal to
2 * 10^9.Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/04/robot1.jpg
Input: obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
Output: 2
Explanation: There is one obstacle in the middle of the 3x3 grid above.
There are two ways to reach the bottom-right corner:
1. Right -> Right -> Down -> Down
2. Down -> Down -> Right -> Right
Example 2:
Image: https://assets.leetcode.com/uploads/2020/11/04/robot2.jpg
Input: obstacleGrid = [[0,1],[0,0]]
Output: 1
Constraints:
•
m == obstacleGrid.length•
n == obstacleGrid[i].length•
1 <= m, n <= 100•
obstacleGrid[i][j] is 0 or 1.2022-05-21
322. Coin Change
Topic: Array, Dynamic Programming, Breadth-First Search
Difficulty: Medium
Problem:
You are given an integer array
Return the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return
You may assume that you have an infinite number of each kind of coin.
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
322. Coin Change
Topic: Array, Dynamic Programming, Breadth-First Search
Difficulty: Medium
Problem:
You are given an integer array
coins representing coins of different denominations and an integer amount representing a total amount of money.Return the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return
-1.You may assume that you have an infinite number of each kind of coin.
Example 1:
Input: coins = [1,2,5], amount = 11
Output: 3
Explanation: 11 = 5 + 5 + 1
Example 2:
Input: coins = [2], amount = 3
Output: -1
Example 3:
Input: coins = [1], amount = 0
Output: 0
Constraints:
•
1 <= coins.length <= 12•
1 <= coins[i] <= 2^31 - 1•
0 <= amount <= 10^42022-05-22
647. Palindromic Substrings
Topic: String, Dynamic Programming
Difficulty: Medium
Problem:
Given a string
A string is a palindrome when it reads the same backward as forward.
A substring is a contiguous sequence of characters within the string.
Example 1:
Example 2:
Constraints:
•
•
647. Palindromic Substrings
Topic: String, Dynamic Programming
Difficulty: Medium
Problem:
Given a string
s, return the number of palindromic substrings in it.A string is a palindrome when it reads the same backward as forward.
A substring is a contiguous sequence of characters within the string.
Example 1:
Input: s = "abc"
Output: 3
Explanation: Three palindromic strings: "a", "b", "c".
Example 2:
Input: s = "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".
Constraints:
•
1 <= s.length <= 1000•
s consists of lowercase English letters.2022-05-23
474. Ones and Zeroes
Topic: Array, String, Dynamic Programming
Difficulty: Medium
Problem:
You are given an array of binary strings
Return the size of the largest subset of
A set
Example 1:
Example 2:
Constraints:
•
•
•
•
474. Ones and Zeroes
Topic: Array, String, Dynamic Programming
Difficulty: Medium
Problem:
You are given an array of binary strings
strs and two integers m and n.Return the size of the largest subset of
strs such that there are at most m 0's and n 1's in the subset.A set
x is a subset of a set y if all elements of x are also elements of y.Example 1:
Input: strs = ["10","0001","111001","1","0"], m = 5, n = 3
Output: 4
Explanation: The largest subset with at most 5 0's and 3 1's is {"10", "0001", "1", "0"}, so the answer is 4.
Other valid but smaller subsets include {"0001", "1"} and {"10", "1", "0"}.
{"111001"} is an invalid subset because it contains 4 1's, greater than the maximum of 3.
Example 2:
Input: strs = ["10","0","1"], m = 1, n = 1
Output: 2
Explanation: The largest subset is {"0", "1"}, so the answer is 2.
Constraints:
•
1 <= strs.length <= 600•
1 <= strs[i].length <= 100•
strs[i] consists only of digits '0' and '1'.•
1 <= m, n <= 1002022-05-24
32. Longest Valid Parentheses
Topic: String, Dynamic Programming, Stack
Difficulty: Hard
Problem:
Given a string containing just the characters
Example 1:
Example 2:
Example 3:
Constraints:
•
•
32. Longest Valid Parentheses
Topic: String, Dynamic Programming, Stack
Difficulty: Hard
Problem:
Given a string containing just the characters
'(' and ')', find the length of the longest valid (well-formed) parentheses substring.Example 1:
Input: s = "(()"
Output: 2
Explanation: The longest valid parentheses substring is "()".
Example 2:
Input: s = ")()())"
Output: 4
Explanation: The longest valid parentheses substring is "()()".
Example 3:
Input: s = ""
Output: 0
Constraints:
•
0 <= s.length <= 3 * 10^4•
s[i] is '(', or ')'.2022-05-25
354. Russian Doll Envelopes
Topic: Array, Binary Search, Dynamic Programming, Sorting
Difficulty: Hard
Problem:
You are given a 2D array of integers
One envelope can fit into another if and only if both the width and height of one envelope are greater than the other envelope's width and height.
Return the maximum number of envelopes you can Russian doll (i.e., put one inside the other).
Note: You cannot rotate an envelope.
Example 1:
Example 2:
Constraints:
•
•
•
354. Russian Doll Envelopes
Topic: Array, Binary Search, Dynamic Programming, Sorting
Difficulty: Hard
Problem:
You are given a 2D array of integers
envelopes where envelopes[i] = [w_i, h_i] represents the width and the height of an envelope.One envelope can fit into another if and only if both the width and height of one envelope are greater than the other envelope's width and height.
Return the maximum number of envelopes you can Russian doll (i.e., put one inside the other).
Note: You cannot rotate an envelope.
Example 1:
Input: envelopes = [[5,4],[6,4],[6,7],[2,3]]
Output: 3
Explanation: The maximum number of envelopes you can Russian doll is 3 ([2,3] => [5,4] => [6,7]).
Example 2:
Input: envelopes = [[1,1],[1,1],[1,1]]
Output: 1
Constraints:
•
1 <= envelopes.length <= 10^5•
envelopes[i].length == 2•
1 <= w_i, h_i <= 10^52022-05-26
191. Number of 1 Bits
Topic: Bit Manipulation
Difficulty: Easy
Problem:
Write a function that takes an unsigned integer and returns the number of '1' bits it has (also known as the Hamming weight).
Note:
• Note that in some languages, such as Java, there is no unsigned integer type. In this case, the input will be given as a signed integer type. It should not affect your implementation, as the integer's internal binary representation is the same, whether it is signed or unsigned.
• In Java, the compiler represents the signed integers using 2's complement notation. Therefore, in Example 3, the input represents the signed integer.
Example 1:
Example 2:
Example 3:
Constraints:
• The input must be a binary string of length
Follow up: If this function is called many times, how would you optimize it?
191. Number of 1 Bits
Topic: Bit Manipulation
Difficulty: Easy
Problem:
Write a function that takes an unsigned integer and returns the number of '1' bits it has (also known as the Hamming weight).
Note:
• Note that in some languages, such as Java, there is no unsigned integer type. In this case, the input will be given as a signed integer type. It should not affect your implementation, as the integer's internal binary representation is the same, whether it is signed or unsigned.
• In Java, the compiler represents the signed integers using 2's complement notation. Therefore, in Example 3, the input represents the signed integer.
-3.Example 1:
Input: n = 00000000000000000000000000001011
Output: 3
Explanation: The input binary string 00000000000000000000000000001011 has a total of three '1' bits.
Example 2:
Input: n = 00000000000000000000000010000000
Output: 1
Explanation: The input binary string 00000000000000000000000010000000 has a total of one '1' bit.
Example 3:
Input: n = 11111111111111111111111111111101
Output: 31
Explanation: The input binary string 11111111111111111111111111111101 has a total of thirty one '1' bits.
Constraints:
• The input must be a binary string of length
32.Follow up: If this function is called many times, how would you optimize it?
2022-05-27
1342. Number of Steps to Reduce a Number to Zero
Topic: Math, Bit Manipulation
Difficulty: Easy
Problem:
Given an integer
In one step, if the current number is even, you have to divide it by
Example 1:
Example 2:
Example 3:
Constraints:
•
1342. Number of Steps to Reduce a Number to Zero
Topic: Math, Bit Manipulation
Difficulty: Easy
Problem:
Given an integer
num, return the number of steps to reduce it to zero.In one step, if the current number is even, you have to divide it by
2, otherwise, you have to subtract 1 from it.Example 1:
Input: num = 14
Output: 6
Explanation:
Step 1) 14 is even; divide by 2 and obtain 7.
Step 2) 7 is odd; subtract 1 and obtain 6.
Step 3) 6 is even; divide by 2 and obtain 3.
Step 4) 3 is odd; subtract 1 and obtain 2.
Step 5) 2 is even; divide by 2 and obtain 1.
Step 6) 1 is odd; subtract 1 and obtain 0.
Example 2:
Input: num = 8
Output: 4
Explanation:
Step 1) 8 is even; divide by 2 and obtain 4.
Step 2) 4 is even; divide by 2 and obtain 2.
Step 3) 2 is even; divide by 2 and obtain 1.
Step 4) 1 is odd; subtract 1 and obtain 0.
Example 3:
Input: num = 123
Output: 12
Constraints:
•
0 <= num <= 10^62022-05-28
268. Missing Number
Topic: Array, Hash Table, Math, Bit Manipulation, Sorting
Difficulty: Easy
Problem:
Given an array
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
• All the numbers of
Follow up: Could you implement a solution using only
268. Missing Number
Topic: Array, Hash Table, Math, Bit Manipulation, Sorting
Difficulty: Easy
Problem:
Given an array
nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array.Example 1:
Input: nums = [3,0,1]
Output: 2
Explanation: n = 3 since there are 3 numbers, so all numbers are in the range [0,3]. 2 is the missing number in the range since it does not appear in nums.
Example 2:
Input: nums = [0,1]
Output: 2
Explanation: n = 2 since there are 2 numbers, so all numbers are in the range [0,2]. 2 is the missing number in the range since it does not appear in nums.
Example 3:
Input: nums = [9,6,4,2,3,5,7,0,1]
Output: 8
Explanation: n = 9 since there are 9 numbers, so all numbers are in the range [0,9]. 8 is the missing number in the range since it does not appear in nums.
Constraints:
•
n == nums.length•
1 <= n <= 10^4•
0 <= nums[i] <= n• All the numbers of
nums are unique.Follow up: Could you implement a solution using only
O(1) extra space complexity and O(n) runtime complexity?2022-05-29
318. Maximum Product of Word Lengths
Topic: Array, String, Bit Manipulation
Difficulty: Medium
Problem:
Given a string array
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
318. Maximum Product of Word Lengths
Topic: Array, String, Bit Manipulation
Difficulty: Medium
Problem:
Given a string array
words, return the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. If no such two words exist, return 0.Example 1:
Input: words = ["abcw","baz","foo","bar","xtfn","abcdef"]
Output: 16
Explanation: The two words can be "abcw", "xtfn".
Example 2:
Input: words = ["a","ab","abc","d","cd","bcd","abcd"]
Output: 4
Explanation: The two words can be "ab", "cd".
Example 3:
Input: words = ["a","aa","aaa","aaaa"]
Output: 0
Explanation: No such pair of words.
Constraints:
•
2 <= words.length <= 1000•
1 <= words[i].length <= 1000•
words[i] consists only of lowercase English letters.2022-05-30
29. Divide Two Integers
Topic: Math, Bit Manipulation
Difficulty: Medium
Problem:
Given two integers
The integer division should truncate toward zero, which means losing its fractional part. For example,
Return the quotient after dividing
Note: Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range:
Example 1:
Example 2:
Constraints:
•
•
29. Divide Two Integers
Topic: Math, Bit Manipulation
Difficulty: Medium
Problem:
Given two integers
dividend and divisor, divide two integers without using multiplication, division, and mod operator.The integer division should truncate toward zero, which means losing its fractional part. For example,
8.345 would be truncated to 8, and -2.7335 would be truncated to -2.Return the quotient after dividing
dividend by divisor.Note: Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range:
[−2^31, 2^31 − 1]. For this problem, if the quotient is strictly greater than 2^31 - 1, then return 2^31 - 1, and if the quotient is strictly less than -2^31, then return -2^31.Example 1:
Input: dividend = 10, divisor = 3
Output: 3
Explanation: 10/3 = 3.33333.. which is truncated to 3.
Example 2:
Input: dividend = 7, divisor = -3
Output: -2
Explanation: 7/-3 = -2.33333.. which is truncated to -2.
Constraints:
•
-2^31 <= dividend, divisor <= 2^31 - 1•
divisor != 02022-05-31
1461. Check If a String Contains All Binary Codes of Size K
Topic: Hash Table, String, Bit Manipulation, Rolling Hash, Hash Function
Difficulty: Medium
Problem:
Given a binary string
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
1461. Check If a String Contains All Binary Codes of Size K
Topic: Hash Table, String, Bit Manipulation, Rolling Hash, Hash Function
Difficulty: Medium
Problem:
Given a binary string
s and an integer k, return true if every binary code of length k is a substring of s. Otherwise, return false.Example 1:
Input: s = "00110110", k = 2
Output: true
Explanation: The binary codes of length 2 are "00", "01", "10" and "11". They can be all found as substrings at indices 0, 1, 3 and 2 respectively.
Example 2:
Input: s = "0110", k = 1
Output: true
Explanation: The binary codes of length 1 are "0" and "1", it is clear that both exist as a substring.
Example 3:
Input: s = "0110", k = 2
Output: false
Explanation: The binary code "00" is of length 2 and does not exist in the array.
Constraints:
•
1 <= s.length <= 5 * 10^5•
s[i] is either '0' or '1'.•
1 <= k <= 202022-06-01
1480. Running Sum of 1d Array
Topic: Array, Prefix Sum
Difficulty: Easy
Problem:
Given an array
Return the running sum of
Example 1:
Example 2:
Example 3:
Constraints:
•
•
1480. Running Sum of 1d Array
Topic: Array, Prefix Sum
Difficulty: Easy
Problem:
Given an array
nums. We define a running sum of an array as runningSum[i] = sum(nums[0]…nums[i]).Return the running sum of
nums.Example 1:
Input: nums = [1,2,3,4]
Output: [1,3,6,10]
Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].
Example 2:
Input: nums = [1,1,1,1,1]
Output: [1,2,3,4,5]
Explanation: Running sum is obtained as follows: [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].
Example 3:
Input: nums = [3,1,2,10,1]
Output: [3,4,6,16,17]
Constraints:
•
1 <= nums.length <= 1000•
-10^6 <= nums[i] <= 10^62022-06-02
867. Transpose Matrix
Topic: Array, Matrix, Simulation
Difficulty: Easy
Problem:
Given a 2D integer array
The transpose of a matrix is the matrix flipped over its main diagonal, switching the matrix's row and column indices.
Image: https://assets.leetcode.com/uploads/2021/02/10/hint_transpose.png
Example 1:
Example 2:
Constraints:
•
•
•
•
•
867. Transpose Matrix
Topic: Array, Matrix, Simulation
Difficulty: Easy
Problem:
Given a 2D integer array
matrix, return the transpose of matrix.The transpose of a matrix is the matrix flipped over its main diagonal, switching the matrix's row and column indices.
Image: https://assets.leetcode.com/uploads/2021/02/10/hint_transpose.png
Example 1:
Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [[1,4,7],[2,5,8],[3,6,9]]
Example 2:
Input: matrix = [[1,2,3],[4,5,6]]
Output: [[1,4],[2,5],[3,6]]
Constraints:
•
m == matrix.length•
n == matrix[i].length•
1 <= m, n <= 1000•
1 <= m * n <= 10^5•
-10^9 <= matrix[i][j] <= 10^92022-06-03
304. Range Sum Query 2D - Immutable
Topic: Array, Design, Matrix, Prefix Sum
Difficulty: Medium
Problem:
Given a 2D matrix
• Calculate the sum of the elements of
Implement the NumMatrix class:
•
•
Example 1:
Image: https://assets.leetcode.com/uploads/2021/03/14/sum-grid.jpg
Constraints:
•
•
•
•
•
•
• At most
304. Range Sum Query 2D - Immutable
Topic: Array, Design, Matrix, Prefix Sum
Difficulty: Medium
Problem:
Given a 2D matrix
matrix, handle multiple queries of the following type:• Calculate the sum of the elements of
matrix inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).Implement the NumMatrix class:
•
NumMatrix(int[][] matrix) Initializes the object with the integer matrix matrix.•
int sumRegion(int row1, int col1, int row2, int col2) Returns the sum of the elements of matrix inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).Example 1:
Image: https://assets.leetcode.com/uploads/2021/03/14/sum-grid.jpg
Input
["NumMatrix", "sumRegion", "sumRegion", "sumRegion"]
[[[[3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5]]], [2, 1, 4, 3], [1, 1, 2, 2], [1, 2, 2, 4]]
Output
[null, 8, 11, 12]
Explanation
NumMatrix numMatrix = new NumMatrix([[3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5]]);
numMatrix.sumRegion(2, 1, 4, 3); // return 8 (i.e sum of the red rectangle)
numMatrix.sumRegion(1, 1, 2, 2); // return 11 (i.e sum of the green rectangle)
numMatrix.sumRegion(1, 2, 2, 4); // return 12 (i.e sum of the blue rectangle)
Constraints:
•
m == matrix.length•
n == matrix[i].length•
1 <= m, n <= 200•
-10^5 <= matrix[i][j] <= 10^5•
0 <= row1 <= row2 < m•
0 <= col1 <= col2 < n• At most
10^4 calls will be made to sumRegion.2022-06-04
51. N-Queens
Topic: Array, Backtracking
Difficulty: Hard
Problem:
The n-queens puzzle is the problem of placing
Given an integer
Each solution contains a distinct board configuration of the n-queens' placement, where
Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/13/queens.jpg
Example 2:
Constraints:
•
51. N-Queens
Topic: Array, Backtracking
Difficulty: Hard
Problem:
The n-queens puzzle is the problem of placing
n queens on an n x n chessboard such that no two queens attack each other.Given an integer
n, return all distinct solutions to the n-queens puzzle. You may return the answer in any order.Each solution contains a distinct board configuration of the n-queens' placement, where
'Q' and '.' both indicate a queen and an empty space, respectively.Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/13/queens.jpg
Input: n = 4
Output: [[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
Explanation: There exist two distinct solutions to the 4-queens puzzle as shown above
Example 2:
Input: n = 1
Output: [["Q"]]
Constraints:
•
1 <= n <= 92022-06-05
52. N-Queens II
Topic: Backtracking
Difficulty: Hard
Problem:
The n-queens puzzle is the problem of placing
Given an integer
Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/13/queens.jpg
Example 2:
Constraints:
•
52. N-Queens II
Topic: Backtracking
Difficulty: Hard
Problem:
The n-queens puzzle is the problem of placing
n queens on an n x n chessboard such that no two queens attack each other.Given an integer
n, return the number of distinct solutions to the n-queens puzzle.Example 1:
Image: https://assets.leetcode.com/uploads/2020/11/13/queens.jpg
Input: n = 4
Output: 2
Explanation: There are two distinct solutions to the 4-queens puzzle as shown.
Example 2:
Input: n = 1
Output: 1
Constraints:
•
1 <= n <= 92022-06-06
160. Intersection of Two Linked Lists
Topic: Hash Table, Linked List, Two Pointers
Difficulty: Easy
Problem:
Given the heads of two singly linked-lists
For example, the following two linked lists begin to intersect at node
Image: https://assets.leetcode.com/uploads/2021/03/05/160_statement.png
The test cases are generated such that there are no cycles anywhere in the entire linked structure.
Note that the linked lists must retain their original structure after the function returns.
Custom Judge:
The inputs to the judge are given as follows (your program is not given these inputs):
•
•
•
•
•
The judge will then create the linked structure based on these inputs and pass the two heads,
Example 1:
Image: https://assets.leetcode.com/uploads/2021/03/05/160_example_1_1.png
Example 2:
Image: https://assets.leetcode.com/uploads/2021/03/05/160_example_2.png
Example 3:
Image: https://assets.leetcode.com/uploads/2021/03/05/160_example_3.png
Constraints:
• The number of nodes of
• The number of nodes of
•
•
•
•
•
•
Follow up: Could you write a solution that runs in
160. Intersection of Two Linked Lists
Topic: Hash Table, Linked List, Two Pointers
Difficulty: Easy
Problem:
Given the heads of two singly linked-lists
headA and headB, return the node at which the two lists intersect. If the two linked lists have no intersection at all, return null.For example, the following two linked lists begin to intersect at node
c1:Image: https://assets.leetcode.com/uploads/2021/03/05/160_statement.png
The test cases are generated such that there are no cycles anywhere in the entire linked structure.
Note that the linked lists must retain their original structure after the function returns.
Custom Judge:
The inputs to the judge are given as follows (your program is not given these inputs):
•
intersectVal - The value of the node where the intersection occurs. This is 0 if there is no intersected node.•
listA - The first linked list.•
listB - The second linked list.•
skipA - The number of nodes to skip ahead in listA (starting from the head) to get to the intersected node.•
skipB - The number of nodes to skip ahead in listB (starting from the head) to get to the intersected node.The judge will then create the linked structure based on these inputs and pass the two heads,
headA and headB to your program. If you correctly return the intersected node, then your solution will be accepted.Example 1:
Image: https://assets.leetcode.com/uploads/2021/03/05/160_example_1_1.png
Input: intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3
Output: Intersected at '8'
Explanation: The intersected node's value is 8 (note that this must not be 0 if the two lists intersect).
From the head of A, it reads as [4,1,8,4,5]. From the head of B, it reads as [5,6,1,8,4,5]. There are 2 nodes before the intersected node in A; There are 3 nodes before the intersected node in B.
Example 2:
Image: https://assets.leetcode.com/uploads/2021/03/05/160_example_2.png
Input: intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
Output: Intersected at '2'
Explanation: The intersected node's value is 2 (note that this must not be 0 if the two lists intersect).
From the head of A, it reads as [1,9,1,2,4]. From the head of B, it reads as [3,2,4]. There are 3 nodes before the intersected node in A; There are 1 node before the intersected node in B.
Example 3:
Image: https://assets.leetcode.com/uploads/2021/03/05/160_example_3.png
Input: intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
Output: No intersection
Explanation: From the head of A, it reads as [2,6,4]. From the head of B, it reads as [1,5]. Since the two lists do not intersect, intersectVal must be 0, while skipA and skipB can be arbitrary values.
Explanation: The two lists do not intersect, so return null.
Constraints:
• The number of nodes of
listA is in the m.• The number of nodes of
listB is in the n.•
1 <= m, n <= 3 * 10^4•
1 <= Node.val <= 10^5•
0 <= skipA < m•
0 <= skipB < n•
intersectVal is 0 if listA and listB do not intersect.•
intersectVal == listA[skipA] == listB[skipB] if listA and listB intersect.Follow up: Could you write a solution that runs in
O(m + n) time and use only O(1) memory?2022-06-07
88. Merge Sorted Array
Topic: Array, Two Pointers, Sorting
Difficulty: Easy
Problem:
You are given two integer arrays
Merge
The final sorted array should not be returned by the function, but instead be stored inside the array
Example 1:
Example 2:
Example 3:
Constraints:
•
•
•
•
•
Follow up: Can you come up with an algorithm that runs in
88. Merge Sorted Array
Topic: Array, Two Pointers, Sorting
Difficulty: Easy
Problem:
You are given two integer arrays
nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively.Merge
nums1 and nums2 into a single array sorted in non-decreasing order.The final sorted array should not be returned by the function, but instead be stored inside the array
nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.Example 1:
Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
Explanation: The arrays we are merging are [1,2,3] and [2,5,6].
The result of the merge is [1,2,2,3,5,6] with the underlined elements coming from nums1.
Example 2:
Input: nums1 = [1], m = 1, nums2 = [], n = 0
Output: [1]
Explanation: The arrays we are merging are [1] and [].
The result of the merge is [1].
Example 3:
Input: nums1 = [0], m = 0, nums2 = [1], n = 1
Output: [1]
Explanation: The arrays we are merging are [] and [1].
The result of the merge is [1].
Note that because m = 0, there are no elements in nums1. The 0 is only there to ensure the merge result can fit in nums1.
Constraints:
•
nums1.length == m + n•
nums2.length == n•
0 <= m, n <= 200•
1 <= m + n <= 200•
-10^9 <= nums1[i], nums2[j] <= 10^9Follow up: Can you come up with an algorithm that runs in
O(m + n) time?