Leetcode 2021-06-07
π‘ 494.target-sum
π·οΈ Tags
#depth_first_search #dynamic_programming
Description
You are given an integer array
You want to build an expression out of nums by adding one of the symbols
For example, if
Return the number of different expressions that you can build, which evaluates to
Example
π‘ 494.target-sum
π·οΈ Tags
#depth_first_search #dynamic_programming
Description
You are given an integer array
nums and an integer target.You want to build an expression out of nums by adding one of the symbols
'+' and '-' before each integer in nums and then concatenate all the integers.For example, if
nums = [2, 1], you can add a '+' before 2 and a '-' before 1 and concatenate them to build the expression "+2-1".Return the number of different expressions that you can build, which evaluates to
target.Example
Input: nums = [1,1,1,1,1], target = 3
Output: 5
Explanation: There are 5 ways to assign symbols to make the sum of nums be target 3.
-1 + 1 + 1 + 1 + 1 = 3
+1 - 1 + 1 + 1 + 1 = 3
+1 + 1 - 1 + 1 + 1 = 3
+1 + 1 + 1 - 1 + 1 = 3
+1 + 1 + 1 + 1 - 1 = 3
Leetcode 2021-06-08
π‘ 1049.last-stone-weight-ii
π·οΈ Tags
#dynamic_programming
Description
You are given an array of integers
We are playing a game with the stones. On each turn, we choose any two stones and smash them together. Suppose the stones have weights
If
If
At the end of the game, there is at most one stone left.
Return the smallest possible weight of the left stone. If there are no stones left, return
Example
π‘ 1049.last-stone-weight-ii
π·οΈ Tags
#dynamic_programming
Description
You are given an array of integers
stones where stones[i] is the weight of the ith stone.We are playing a game with the stones. On each turn, we choose any two stones and smash them together. Suppose the stones have weights
x and y with x <= y. The result of this smash is:If
x == y, both stones are destroyed, andIf
x != y, the stone of weight x is destroyed, and the stone of weight y has new weight y - x.At the end of the game, there is at most one stone left.
Return the smallest possible weight of the left stone. If there are no stones left, return
0.Example
Input: stones = [2,7,4,1,8,1]
Output: 1
Explanation:
We can combine 2 and 4 to get 2, so the array converts to [2,7,1,8,1] then,
we can combine 7 and 8 to get 1, so the array converts to [2,1,1,1] then,
we can combine 2 and 1 to get 1, so the array converts to [1,1,1] then,
we can combine 1 and 1 to get 0, so the array converts to [1], then that's the optimal value.
Leetcode 2021-06-09
π΄ 879.profitable-schemes
π·οΈ Tags
#dynamic_programming
Description
There is a group of
Let's call a profitable scheme any subset of these crimes that generates at least
Return the number of schemes that can be chosen. Since the answer may be very large, return it modulo
Example
π΄ 879.profitable-schemes
π·οΈ Tags
#dynamic_programming
Description
There is a group of
n members, and a list of various crimes they could commit. The ith crime generates a profit[i] and requires group[i] members to participate in it. If a member participates in one crime, that member can't participate in another crime.Let's call a profitable scheme any subset of these crimes that generates at least
minProfit profit, and the total number of members participating in that subset of crimes is at most n.Return the number of schemes that can be chosen. Since the answer may be very large, return it modulo
109 + 7.Example
Input: n = 5, minProfit = 3, group = [2,2], profit = [2,3]
Output: 2
Explanation: To make a profit of at least 3, the group could either commit crimes 0 and 1, or just crime 1.
In total, there are 2 schemes.
Leetcode 2021-06-10
π‘ 518.coin-change-2
π·οΈ Tags
Description
You are given an integer array
Return the number of combinations that 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.
The answer is guaranteed to fit into a signed 32-bit integer.
Example
π‘ 518.coin-change-2
π·οΈ Tags
Description
You are given an integer array
coins representing coins of different denominations and an integer amount representing a total amount of money.Return the number of combinations that make up that amount. If that amount of money cannot be made up by any combination of the coins, return
0.You may assume that you have an infinite number of each kind of coin.
The answer is guaranteed to fit into a signed 32-bit integer.
Example
Input: amount = 5, coins = [1,2,5]
Output: 4
Explanation: there are four ways to make up the amount:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
Leetcode 2021-06-11
π‘ 279.perfect-squares
π·οΈ Tags
#breadth_first_search #math #dynamic_programming
Description
Given an integer
A perfect square is an integer that is the square of an integer; in other words, it is the product of some integer with itself. For example,
Example
π‘ 279.perfect-squares
π·οΈ Tags
#breadth_first_search #math #dynamic_programming
Description
Given an integer
n, return the least number of perfect square numbers that sum to n.A perfect square is an integer that is the square of an integer; in other words, it is the product of some integer with itself. For example,
1, 4, 9, and 16 are perfect squares while 3 and 11 are not.Example
Input: n = 12
Output: 3
Explanation: 12 = 4 + 4 + 4.
Leetcode 2021-06-12
π΄ 1449.form-largest-integer-with-digits-that-add-up-to-target
π·οΈ Tags
#string #dynamic_programming
Description
Given an array of integers
The cost of painting a digit (i+1) is given by
The total cost used must be equal to
Integer does not have digits 0.
Since the answer may be too large, return it as string.
If there is no way to paint any integer given the condition, return "0".
Example
π΄ 1449.form-largest-integer-with-digits-that-add-up-to-target
π·οΈ Tags
#string #dynamic_programming
Description
Given an array of integers
cost and an integer target. Return the maximum integer you can paint under the following rules:The cost of painting a digit (i+1) is given by
cost[i] (0 indexed).The total cost used must be equal to
target.Integer does not have digits 0.
Since the answer may be too large, return it as string.
If there is no way to paint any integer given the condition, return "0".
Example
Input: cost = [4,3,2,5,6,7,2,5,5], target = 9
Output: "7772"
Explanation: The cost to paint the digit '7' is 2, and the digit '2' is 3. Then cost("7772") = 2*3+ 3*1 = 9. You could also paint "977", but "7772" is the largest number.
Digit cost
1 -> 4
2 -> 3
3 -> 2
4 -> 5
5 -> 6
6 -> 7
7 -> 2
8 -> 5
9 -> 5
Leetcode 2021-06-13
π’ 278.first-bad-version
π·οΈ Tags
#binary_search
Description
You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad.
Suppose you have
You are given an API
Example
π’ 278.first-bad-version
π·οΈ Tags
#binary_search
Description
You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad.
Suppose you have
n versions [1, 2, ..., n] and you want to find out the first bad one, which causes all the following ones to be bad.You are given an API
bool isBadVersion(version) which returns whether version is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.Example
Input: n = 5, bad = 4
Output: 4
Explanation:
call isBadVersion(3) -> false
call isBadVersion(5) -> true
call isBadVersion(4) -> true
Then 4 is the first bad version.
Leetcode 2021-06-14
π’ 374.guess-number-higher-or-lower
π·οΈ Tags
#binary_search
Description
We are playing the Guess Game. The game is as follows:
I pick a number from
Every time you guess wrong, I will tell you whether the number I picked is higher or lower than your guess.
You call a pre-defined API
Return the number that I picked.
Example
π’ 374.guess-number-higher-or-lower
π·οΈ Tags
#binary_search
Description
We are playing the Guess Game. The game is as follows:
I pick a number from
1 to n. You have to guess which number I picked.Every time you guess wrong, I will tell you whether the number I picked is higher or lower than your guess.
You call a pre-defined API
int guess(int num), which returns 3 possible results:-1: The number I picked is lower than your guess (i.e. pick < num).1: The number I picked is higher than your guess (i.e. pick > num).0: The number I picked is equal to your guess (i.e. pick == num).Return the number that I picked.
Example
Input: n = 10, pick = 6
Output: 6
Leetcode 2021-06-15
π’ 852.peak-index-in-a-mountain-array
π·οΈ Tags
#binary_search
Description
Let's call an array
There exists some
Given an integer array
Example
π’ 852.peak-index-in-a-mountain-array
π·οΈ Tags
#binary_search
Description
Let's call an array
arr a mountain if the following properties hold:arr.length >= 3There exists some
i with 0 < i < arr.length - 1 such that:arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i+1] > ... > arr[arr.length - 1]Given an integer array
arr that is guaranteed to be a mountain, return any i such that arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1].Example
Input: arr = [0,1,0]
Output: 1
Leetcode 2021-06-16
π‘ 877.stone-game
π·οΈ Tags
#minimax #math #dynamic_programming
Description
Alex and Lee play a game with piles of stones. There are an even number of piles arranged in a row, and each pile has a positive integer number of stones
The objective of the game is to end with the most stones. The total number of stones is odd, so there are no ties.
Alex and Lee take turns, with Alex starting first. Each turn, a player takes the entire pile of stones from either the beginning or the end of the row. This continues until there are no more piles left, at which point the person with the most stones wins.
Assuming Alex and Lee play optimally, return
Example
π‘ 877.stone-game
π·οΈ Tags
#minimax #math #dynamic_programming
Description
Alex and Lee play a game with piles of stones. There are an even number of piles arranged in a row, and each pile has a positive integer number of stones
piles[i].The objective of the game is to end with the most stones. The total number of stones is odd, so there are no ties.
Alex and Lee take turns, with Alex starting first. Each turn, a player takes the entire pile of stones from either the beginning or the end of the row. This continues until there are no more piles left, at which point the person with the most stones wins.
Assuming Alex and Lee play optimally, return
True if and only if Alex wins the game.Example
Input: piles = [5,3,4,5]
Output: true
Explanation:
Alex starts first, and can only take the first 5 or the last 5.
Say he takes the first 5, so that the row becomes [3, 4, 5].
If Lee takes 3, then the board is [4, 5], and Alex takes 5 to win with 10 points.
If Lee takes the last 5, then the board is [3, 4], and Alex takes 4 to win with 9 points.
This demonstrated that taking the first 5 was a winning move for Alex, so we return true.
Leetcode 2021-06-17
π΄ 65.valid-number
π·οΈ Tags
#math #string
Description
A valid number can be split up into these components (in order):
A decimal number or an integer.
(Optional) An
A decimal number can be split up into these components (in order):
(Optional) A sign character (either
One of the following formats:
One or more digits, followed by a dot
One or more digits, followed by a dot
A dot
An integer can be split up into these components (in order):
(Optional) A sign character (either
One or more digits.
For example, all the following are valid numbers:
Given a string
Example
π΄ 65.valid-number
π·οΈ Tags
#math #string
Description
A valid number can be split up into these components (in order):
A decimal number or an integer.
(Optional) An
'e' or 'E', followed by an integer.A decimal number can be split up into these components (in order):
(Optional) A sign character (either
'+' or '-').One of the following formats:
One or more digits, followed by a dot
'.'.One or more digits, followed by a dot
'.', followed by one or more digits.A dot
'.', followed by one or more digits.An integer can be split up into these components (in order):
(Optional) A sign character (either
'+' or '-').One or more digits.
For example, all the following are valid numbers:
["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"], while the following are not valid numbers: ["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"].Given a string
s, return true if s is a valid number.Example
Input: s = "0"
Output: true
Leetcode 2021-06-18
π΄ 483.smallest-good-base
π·οΈ Tags
#math #binary_search
Description
Given an integer
We call
Example
π΄ 483.smallest-good-base
π·οΈ Tags
#math #binary_search
Description
Given an integer
n represented as a string, return the smallest good base of n.We call
k >= 2 a good base of n, if all digits of n base k are 1's.Example
Input: n = "13"
Output: "3"
Explanation: 13 base 3 is 111.
Leetcode 2021-06-19
π‘ 1239.maximum-length-of-a-concatenated-string-with-unique-characters
π·οΈ Tags
#bit_manipulation #backtracking
Description
Given an array of strings
Return the maximum possible length of
Example
π‘ 1239.maximum-length-of-a-concatenated-string-with-unique-characters
π·οΈ Tags
#bit_manipulation #backtracking
Description
Given an array of strings
arr. String s is a concatenation of a sub-sequence of arr which have unique characters.Return the maximum possible length of
s.Example
Input: arr = ["un","iq","ue"]
Output: 4
Explanation: All possible concatenations are "","un","iq","ue","uniq" and "ique".
Maximum length is 4.
Leetcode 2021-06-20
π‘ 1600.throne-inheritance
π·οΈ Tags
#tree #design
Description
A kingdom consists of a king, his children, his grandchildren, and so on. Every once in a while, someone in the family dies or a child is born.
The kingdom has a well-defined order of inheritance that consists of the king as the first member. Let's define the recursive function
For example, assume we have a kingdom that consists of the king, his children Alice and Bob (Alice is older than Bob), and finally Alice's son Jack.
In the beginning,
Calling
Calling
Calling
Calling
Using the above function, we can always obtain a unique order of inheritance.
Implement the
Example
π‘ 1600.throne-inheritance
π·οΈ Tags
#tree #design
Description
A kingdom consists of a king, his children, his grandchildren, and so on. Every once in a while, someone in the family dies or a child is born.
The kingdom has a well-defined order of inheritance that consists of the king as the first member. Let's define the recursive function
Successor(x, curOrder), which given a person x and the inheritance order so far, returns who should be the next person after x in the order of inheritance.
Successor(x, curOrder):
if x has no children or all of x's children are in curOrder:
if x is the king return null
else return Successor(x's parent, curOrder)
else return x's oldest child who's not in curOrder
For example, assume we have a kingdom that consists of the king, his children Alice and Bob (Alice is older than Bob), and finally Alice's son Jack.
In the beginning,
curOrder will be ["king"].Calling
Successor(king, curOrder) will return Alice, so we append to curOrder to get ["king", "Alice"].Calling
Successor(Alice, curOrder) will return Jack, so we append to curOrder to get ["king", "Alice", "Jack"].Calling
Successor(Jack, curOrder) will return Bob, so we append to curOrder to get ["king", "Alice", "Jack", "Bob"].Calling
Successor(Bob, curOrder) will return null. Thus the order of inheritance will be ["king", "Alice", "Jack", "Bob"].Using the above function, we can always obtain a unique order of inheritance.
Implement the
ThroneInheritance class:ThroneInheritance(string kingName) Initializes an object of the ThroneInheritance class. The name of the king is given as part of the constructor.void birth(string parentName, string childName) Indicates that parentName gave birth to childName.void death(string name) Indicates the death of name. The death of the person doesn't affect the Successor function nor the current inheritance order. You can treat it as just marking the person as dead.string[] getInheritanceOrder() Returns a list representing the current order of inheritance excluding dead people.Example
Input
["ThroneInheritance", "birth", "birth", "birth", "birth", "birth", "birth", "getInheritanceOrder", "death", "getInheritanceOrder"]
[["king"], ["king", "andy"], ["king", "bob"], ["king", "catherine"], ["andy", "matthew"], ["bob", "alex"], ["bob", "asha"], [null], ["bob"], [null]]
Output
[null, null, null, null, null, null, null, ["king", "andy", "matthew", "bob", "alex", "asha", "catherine"], null, ["king", "andy", "matthew", "alex", "asha", "catherine"]]
Explanation
ThroneInheritance t= new ThroneInheritance("king"); // order: king
t.birth("king", "andy"); // order: king > andy
t.birth("king", "bob"); // order: king > andy > bob
t.birth("king", "catherine"); // order: king > andy > bob > catherine
t.birth("andy", "matthew"); // order: king > andy > matthew > bob > catherine
t.birth("bob", "alex"); // order: king > andy > matthew > bob > alex > catherine
t.birth("bob", "asha"); // order: king > andy > matthew > bob > alex > asha > catherine
t.getInheritanceOrder(); // return ["king", "andy", "matthew", "bob", "alex", "asha", "catherine"]
t.death("bob"); // order: king > andy > matthew > bob > alex > asha > catherine
t.getInheritanceOrder(); // return ["king", "andy", "matthew", "alex", "asha", "catherine"]
Leetcode 2021-06-21
π’ 401.binary-watch
π·οΈ Tags
#bit_manipulation #backtracking
Description
A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom represent the minutes (0-59). Each LED represents a zero or one, with the least significant bit on the right.
For example, the below binary watch reads
Given an integer
The hour must not contain a leading zero.
For example,
The minute must be consist of two digits and may contain a leading zero.
For example,
Example
π’ 401.binary-watch
π·οΈ Tags
#bit_manipulation #backtracking
Description
A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom represent the minutes (0-59). Each LED represents a zero or one, with the least significant bit on the right.
For example, the below binary watch reads
"4:51".Given an integer
turnedOn which represents the number of LEDs that are currently on, return all possible times the watch could represent. You may return the answer in any order.The hour must not contain a leading zero.
For example,
"01:00" is not valid. It should be "1:00".The minute must be consist of two digits and may contain a leading zero.
For example,
"10:2" is not valid. It should be "10:02".Example
Input: turnedOn = 1
Output: ["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"]
Leetcode 2021-06-22
π‘ εζ Offer 38.zi-fu-chuan-de-pai-lie-lcof
π·οΈ Tags
#backtracking
undefinedundefined
π‘ εζ Offer 38.zi-fu-chuan-de-pai-lie-lcof
π·οΈ Tags
#backtracking
undefinedundefined
Leetcode 2021-06-23
π’ εζ Offer 15.er-jin-zhi-zhong-1de-ge-shu-lcof
π·οΈ Tags
#bit_manipulation
undefinedundefined
π’ εζ Offer 15.er-jin-zhi-zhong-1de-ge-shu-lcof
π·οΈ Tags
#bit_manipulation
undefinedundefined
Leetcode 2021-06-24
π΄ 149.max-points-on-a-line
π·οΈ Tags
#hash_table #math
Description
Given an array of
Example
π΄ 149.max-points-on-a-line
π·οΈ Tags
#hash_table #math
Description
Given an array of
points where points[i] = [xi, yi] represents a point on the X-Y plane, return the maximum number of points that lie on the same straight line.Example
Input: points = [[1,1],[2,2],[3,3]]
Output: 3
Leetcode 2021-06-25
π‘ 752.open-the-lock
π·οΈ Tags
#breadth_first_search #array #hash_table #string
Description
You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots:
The lock initially starts at
You are given a list of
Given a
Example
π‘ 752.open-the-lock
π·οΈ Tags
#breadth_first_search #array #hash_table #string
Description
You have a lock in front of you with 4 circular wheels. Each wheel has 10 slots:
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'. The wheels can rotate freely and wrap around: for example we can turn '9' to be '0', or '0' to be '9'. Each move consists of turning one wheel one slot.The lock initially starts at
'0000', a string representing the state of the 4 wheels.You are given a list of
deadends dead ends, meaning if the lock displays any of these codes, the wheels of the lock will stop turning and you will be unable to open it.Given a
target representing the value of the wheels that will unlock the lock, return the minimum total number of turns required to open the lock, or -1 if it is impossible.Example
Input: deadends = ["0201","0101","0102","1212","2002"], target = "0202"
Output: 6
Explanation:
A sequence of valid moves would be "0000" -> "1000" -> "1100" -> "1200" -> "1201" -> "1202" -> "0202".
Note that a sequence like "0000" -> "0001" -> "0002" -> "0102" -> "0202" would be invalid,
because the wheels of the lock become stuck after the display becomes the dead end "0102".