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-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".
Leetcode 2021-06-26
🔴 773.sliding-puzzle
🏷️ Tags
#breadth_first_search #array #matrix
Description
On a 2x3
A move consists of choosing
The state of the board is solved if and only if the
Given a puzzle board, return the least number of moves required so that the state of the board is solved. If it is impossible for the state of the board to be solved, return -1.
Example
🔴 773.sliding-puzzle
🏷️ Tags
#breadth_first_search #array #matrix
Description
On a 2x3
board, there are 5 tiles represented by the integers 1 through 5, and an empty square represented by 0.A move consists of choosing
0 and a 4-directionally adjacent number and swapping it.The state of the board is solved if and only if the
board is [[1,2,3],[4,5,0]].Given a puzzle board, return the least number of moves required so that the state of the board is solved. If it is impossible for the state of the board to be solved, return -1.
Example
Input: board = [[1,2,3],[4,0,5]]
Output: 1
Explanation: Swap the 0 and the 5 in one move.
Leetcode 2021-06-27
🟡 909.snakes-and-ladders
🏷️ Tags
#breadth_first_search #array #matrix
Description
On an N x N
You start on square
You choose a destination square
(This choice simulates the result of a standard 6-sided die roll: ie., there are always at most 6 destinations, regardless of the size of the board.)
If
A board square on row
Note that you only take a snake or ladder at most once per move: if the destination to a snake or ladder is the start of another snake or ladder, you do not continue moving. (For example, if the board is `[[4,-1],[-1,3]]`, and on the first move your destination square is `2`, then you finish your first move at `3`, because you do not continue moving to `4`.)
Return the least number of moves required to reach square N*N. If it is not possible, return
Example
🟡 909.snakes-and-ladders
🏷️ Tags
#breadth_first_search #array #matrix
Description
On an N x N
board, the numbers from 1 to N*N are written boustrophedonically starting from the bottom left of the board, and alternating direction each row. For example, for a 6 x 6 board, the numbers are written as follows:You start on square
1 of the board (which is always in the last row and first column). Each move, starting from square x, consists of the following:You choose a destination square
S with number x+1, x+2, x+3, x+4, x+5, or x+6, provided this number is <= N*N.(This choice simulates the result of a standard 6-sided die roll: ie., there are always at most 6 destinations, regardless of the size of the board.)
If
S has a snake or ladder, you move to the destination of that snake or ladder. Otherwise, you move to S.A board square on row
r and column c has a "snake or ladder" if board[r][c] != -1. The destination of that snake or ladder is board[r][c].Note that you only take a snake or ladder at most once per move: if the destination to a snake or ladder is the start of another snake or ladder, you do not continue moving. (For example, if the board is `[[4,-1],[-1,3]]`, and on the first move your destination square is `2`, then you finish your first move at `3`, because you do not continue moving to `4`.)
Return the least number of moves required to reach square N*N. If it is not possible, return
-1.Example
Input: [
[-1,-1,-1,-1,-1,-1],
[-1,-1,-1,-1,-1,-1],
[-1,-1,-1,-1,-1,-1],
[-1,35,-1,-1,13,-1],
[-1,-1,-1,-1,-1,-1],
[-1,15,-1,-1,-1,-1]]
Output: 4
Explanation:
At the beginning, you start at square 1 [at row 5, column 0].
You decide to move to square 2, and must take the ladder to square 15.
You then decide to move to square 17 (row 3, column 5), and must take the snake to square 13.
You then decide to move to square 14, and must take the ladder to square 35.
You then decide to move to square 36, ending the game.
It can be shown that you need at least 4 moves to reach the N*N-th square, so the answer is 4.
Leetcode 2021-06-28
🔴 815.bus-routes
🏷️ Tags
#breadth_first_search #array #hash_table
Description
You are given an array
For example, if
You will start at the bus stop
Return the least number of buses you must take to travel from
Example
🔴 815.bus-routes
🏷️ Tags
#breadth_first_search #array #hash_table
Description
You are given an array
routes representing bus routes where routes[i] is a bus route that the ith bus repeats forever.For example, if
routes[0] = [1, 5, 7], this means that the 0th bus travels in the sequence 1 -> 5 -> 7 -> 1 -> 5 -> 7 -> 1 -> ... forever.You will start at the bus stop
source (You are not on any bus initially), and you want to go to the bus stop target. You can travel between bus stops by buses only.Return the least number of buses you must take to travel from
source to target. Return -1 if it is not possible.Example
Input: routes = [[1,2,7],[3,6,7]], source = 1, target = 6
Output: 2
Explanation: The best strategy is take the first bus to the bus stop 7, then take the second bus to the bus stop 6.
Leetcode 2021-06-30
🔴 剑指 Offer 37.xu-lie-hua-er-cha-shu-lcof
🏷️ Tags
#tree #depth_first_search #breadth_first_search #design #string #binary_tree
undefinedundefined
🔴 剑指 Offer 37.xu-lie-hua-er-cha-shu-lcof
🏷️ Tags
#tree #depth_first_search #breadth_first_search #design #string #binary_tree
undefinedundefined
Leetcode 2021-07-01
🟢 LCP 07.chuan-di-xin-xi
🏷️ Tags
#depth_first_search #breadth_first_search #graph #dynamic_programming
undefinedundefined
🟢 LCP 07.chuan-di-xin-xi
🏷️ Tags
#depth_first_search #breadth_first_search #graph #dynamic_programming
undefinedundefined
Leetcode 2021-07-02
🟡 1833.maximum-ice-cream-bars
🏷️ Tags
#greedy #array #sorting
Description
It is a sweltering summer day, and a boy wants to buy some ice cream bars.
At the store, there are
Return the maximum number of ice cream bars the boy can buy with
Note: The boy can buy the ice cream bars in any order.
Example
🟡 1833.maximum-ice-cream-bars
🏷️ Tags
#greedy #array #sorting
Description
It is a sweltering summer day, and a boy wants to buy some ice cream bars.
At the store, there are
n ice cream bars. You are given an array costs of length n, where costs[i] is the price of the ith ice cream bar in coins. The boy initially has coins coins to spend, and he wants to buy as many ice cream bars as possible. Return the maximum number of ice cream bars the boy can buy with
coins coins.Note: The boy can buy the ice cream bars in any order.
Example
Input: costs = [1,3,2,4,1], coins = 7
Output: 4
Explanation: The boy can buy ice cream bars at indices 0,1,2,4 for a total price of 1 + 3 + 2 + 1 = 7.
Leetcode 2021-07-03
🟡 451.sort-characters-by-frequency
🏷️ Tags
#hash_table #string #bucket_sort #counting #sorting #heap_priority_queue
Description
Given a string
Example
🟡 451.sort-characters-by-frequency
🏷️ Tags
#hash_table #string #bucket_sort #counting #sorting #heap_priority_queue
Description
Given a string
s, sort it in decreasing order based on the frequency of characters, and return the sorted string.Example
Input: s = "tree"
Output: "eert"
Explanation: 'e' appears twice while 'r' and 't' both appear once.
So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
Leetcode-cn.com 2021-07-03
🟡 451.sort-characters-by-frequency
🏷️ Tags
#hash_table #string #bucket_sort #counting #sorting #heap_priority_queue
Description
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
Example
🟡 451.sort-characters-by-frequency
🏷️ Tags
#hash_table #string #bucket_sort #counting #sorting #heap_priority_queue
Description
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
Example
输入:
"tree"
输出:
"eert"
解释:
'e'出现两次,'r'和't'都只出现一次。
因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
Leetcode-cn.com 2021-07-04
🟢 645.set-mismatch
🏷️ Tags
#bit_manipulation #array #hash_table #sorting
Description
集合
给定一个数组
请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
Example
🟢 645.set-mismatch
🏷️ Tags
#bit_manipulation #array #hash_table #sorting
Description
集合
s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组
nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
Example
输入:nums = [1,2,2,4]
输出:[2,3]
Leetcode.com 2021-07-03
🔴 363.max-sum-of-rectangle-no-larger-than-k
🏷️ Tags
#array #binary_search #dynamic_programming #matrix #ordered_set
Description
Given an
It is guaranteed that there will be a rectangle with a sum no larger than
Example
🔴 363.max-sum-of-rectangle-no-larger-than-k
🏷️ Tags
#array #binary_search #dynamic_programming #matrix #ordered_set
Description
Given an
m x n matrix matrix and an integer k, return the max sum of a rectangle in the matrix such that its sum is no larger than k.It is guaranteed that there will be a rectangle with a sum no larger than
k.Example
Input: matrix = [[1,0,1],[0,-2,3]], k = 2
Output: 2
Explanation: Because the sum of the blue rectangle [[0, 1], [-2, 3]] is 2, and 2 is the max number no larger than k (k = 2).