Leetcode-cn.com 2021-08-28
🟢 1480.running-sum-of-1d-array
🏷️ Tags
#array #prefix_sum
Description
给你一个数组
请返回
Example
🟢 1480.running-sum-of-1d-array
🏷️ Tags
#array #prefix_sum
Description
给你一个数组
nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回
nums 的动态和。Example
输入:nums = [1,2,3,4]
输出:[1,3,6,10]
解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。
Leetcode.com 2021-08-27
🟡 522.longest-uncommon-subsequence-ii
🏷️ Tags
#array #hash_table #two_pointers #string #sorting
Description
Given an array of strings
An uncommon subsequence between an array of strings is a string that is a subsequence of one string but not the others.
A subsequence of a string
For example,
Example
🟡 522.longest-uncommon-subsequence-ii
🏷️ Tags
#array #hash_table #two_pointers #string #sorting
Description
Given an array of strings
strs, return the length of the longest uncommon subsequence between them. If the longest uncommon subsequence does not exist, return -1.An uncommon subsequence between an array of strings is a string that is a subsequence of one string but not the others.
A subsequence of a string
s is a string that can be obtained after deleting any number of characters from s.For example,
"abc" is a subsequence of "aebdc" because you can delete the underlined characters in "aebdc" to get "abc". Other subsequences of "aebdc" include "aebdc", "aeb", and "" (empty string).Example
Input: strs = ["aba","cdc","eae"]
Output: 3
Leetcode-cn.com 2021-08-29
🟢 1588.sum-of-all-odd-length-subarrays
🏷️ Tags
#array #prefix_sum
Description
给你一个正整数数组
子数组 定义为原数组中的一个连续子序列。
请你返回
Example
🟢 1588.sum-of-all-odd-length-subarrays
🏷️ Tags
#array #prefix_sum
Description
给你一个正整数数组
arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。
请你返回
arr 中 所有奇数长度子数组的和 。Example
输入:arr = [1,4,2,5,3]
输出:58
解释:所有奇数长度子数组和它们的和为:
[1] = 1
[4] = 4
[2] = 2
[5] = 5
[3] = 3
[1,4,2] = 7
[4,2,5] = 11
[2,5,3] = 10
[1,4,2,5,3] = 15
我们将所有值求和得到 1 + 4 + 2 + 5 + 3 + 7 + 11 + 10 + 15 = 58
Leetcode.com 2021-08-28
🔴 1235.maximum-profit-in-job-scheduling
🏷️ Tags
#array #binary_search #dynamic_programming #sorting
Description
We have
You're given the
If you choose a job that ends at time
Example
🔴 1235.maximum-profit-in-job-scheduling
🏷️ Tags
#array #binary_search #dynamic_programming #sorting
Description
We have
n jobs, where every job is scheduled to be done from startTime[i] to endTime[i], obtaining a profit of profit[i].You're given the
startTime, endTime and profit arrays, return the maximum profit you can take such that there are no two jobs in the subset with overlapping time range.If you choose a job that ends at time
X you will be able to start another job that starts at time X.Example
Input: startTime = [1,2,3,3], endTime = [3,4,5,6], profit = [50,10,40,70]
Output: 120
Explanation: The subset chosen is the first and fourth job.
Time range [1-3]+[3-6] , we get profit of 120 = 50 + 70.
Leetcode-cn.com 2021-08-30
🟡 528.random-pick-with-weight
🏷️ Tags
#math #binary_search #prefix_sum #randomized
Description
给定一个正整数数组
例如,对于
也就是说,选取下标
Example
🟡 528.random-pick-with-weight
🏷️ Tags
#math #binary_search #prefix_sum #randomized
Description
给定一个正整数数组
w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。例如,对于
w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 + 3) = 0.75(即,75%)。也就是说,选取下标
i 的概率为 w[i] / sum(w) 。Example
输入:
["Solution","pickIndex"]
[[[1]],[]]
输出:
[null,0]
解释:
Solution solution = new Solution([1]);
solution.pickIndex(); // 返回 0,因为数组中只有一个元素,所以唯一的选择是返回下标 0。
Leetcode.com 2021-08-29
🔴 330.patching-array
🏷️ Tags
#greedy #array
Description
Given a sorted integer array
Return the minimum number of patches required.
Example
🔴 330.patching-array
🏷️ Tags
#greedy #array
Description
Given a sorted integer array
nums and an integer n, add/patch elements to the array such that any number in the range [1, n] inclusive can be formed by the sum of some elements in the array.Return the minimum number of patches required.
Example
Input: nums = [1,3], n = 6
Output: 1
Explanation:
Combinations of nums are [1], [3], [1,3], which form possible sums of: 1, 3, 4.
Now if we add/patch 2 to nums, the combinations are: [1], [2], [3], [1,3], [2,3], [1,2,3].
Possible sums are 1, 2, 3, 4, 5, 6, which now covers the range [1, 6].
So we only need 1 patch.
Leetcode-cn.com 2021-08-31
🟡 1109.corporate-flight-bookings
🏷️ Tags
#array #prefix_sum
Description
这里有
有一份航班预订表
请你返回一个长度为
Example
🟡 1109.corporate-flight-bookings
🏷️ Tags
#array #prefix_sum
Description
这里有
n 个航班,它们分别从 1 到 n 进行编号。有一份航班预订表
bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。请你返回一个长度为
n 的数组 answer,其中 answer[i] 是航班 i 上预订的座位总数。Example
输入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5
输出:[10,55,45,25,25]
解释:
航班编号 1 2 3 4 5
预订记录 1 : 10 10
预订记录 2 : 20 20
预订记录 3 : 25 25 25 25
总座位数: 10 55 45 25 25
因此,answer = [10,55,45,25,25]
Leetcode.com 2021-08-30
🟢 598.range-addition-ii
🏷️ Tags
#array #math
Description
You are given an
Count and return the number of maximum integers in the matrix after performing all the operations.
Example
🟢 598.range-addition-ii
🏷️ Tags
#array #math
Description
You are given an
m x n matrix M initialized with all 0's and an array of operations ops, where ops[i] = [ai, bi] means M[x][y] should be incremented by one for all 0 <= x < ai and 0 <= y < bi.Count and return the number of maximum integers in the matrix after performing all the operations.
Example
Input: m = 3, n = 3, ops = [[2,2],[3,3]]
Output: 4
Explanation: The maximum integer in M is 2, and there are four of it in M. So return 4.
Leetcode.com 2021-08-31
🟡 153.find-minimum-in-rotated-sorted-array
🏷️ Tags
#array #binary_search
Description
Suppose an array of length
Notice that rotating an array
Given the sorted rotated array
You must write an algorithm that runs in
Example
🟡 153.find-minimum-in-rotated-sorted-array
🏷️ Tags
#array #binary_search
Description
Suppose an array of length
n sorted in ascending order is rotated between 1 and n times. For example, the array nums = [0,1,2,4,5,6,7] might become:[4,5,6,7,0,1,2] if it was rotated 4 times.[0,1,2,4,5,6,7] if it was rotated 7 times.Notice that rotating an array
[a[0], a[1], a[2], ..., a[n-1]] 1 time results in the array [a[n-1], a[0], a[1], a[2], ..., a[n-2]].Given the sorted rotated array
nums of unique elements, return the minimum element of this array.You must write an algorithm that runs in
O(log n) time.Example
Input: nums = [3,4,5,1,2]
Output: 1
Explanation: The original array was [1,2,3,4,5] rotated 3 times.
Leetcode-cn.com 2021-09-02
🟢 剑指 Offer 22.lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof
🏷️ Tags
#linked_list #two_pointers
Description
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
例如,一个链表有
undefined
🟢 剑指 Offer 22.lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof
🏷️ Tags
#linked_list #two_pointers
Description
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
例如,一个链表有
6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。undefined
Leetcode.com 2021-09-01
🟡 565.array-nesting
🏷️ Tags
#depth_first_search #array
Description
You are given an integer array
You should build a set
The first element in
The next element in
We stop adding right before a duplicate element occurs in
Return the longest length of a set
Example
🟡 565.array-nesting
🏷️ Tags
#depth_first_search #array
Description
You are given an integer array
nums of length n where nums is a permutation of the numbers in the range [0, n - 1].You should build a set
s[k] = {nums[k], nums[nums[k]], nums[nums[nums[k]]], ... } subjected to the following rule:The first element in
s[k] starts with the selection of the element nums[k] of index = k.The next element in
s[k] should be nums[nums[k]], and then nums[nums[nums[k]]], and so on.We stop adding right before a duplicate element occurs in
s[k].Return the longest length of a set
s[k].Example
Input: nums = [5,4,0,3,1,6,2]
Output: 4
Explanation:
nums[0] = 5, nums[1] = 4, nums[2] = 0, nums[3] = 3, nums[4] = 1, nums[5] = 6, nums[6] = 2.
One of the longest sets s[k]:
s[0] = {nums[0], nums[5], nums[6], nums[2]} = {5, 6, 2, 0}
Leetcode-cn.com 2021-09-03
🟡 面试题 17.14.smallest-k-lcci
🏷️ Tags
#array #divide_and_conquer #quickselect #sorting #heap_priority_queue
Description
设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
Example
🟡 面试题 17.14.smallest-k-lcci
🏷️ Tags
#array #divide_and_conquer #quickselect #sorting #heap_priority_queue
Description
设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
Example
输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]
Leetcode.com 2021-09-02
🟡 95.unique-binary-search-trees-ii
🏷️ Tags
#tree #binary_search_tree #dynamic_programming #backtracking #binary_tree
Description
Given an integer
Example
🟡 95.unique-binary-search-trees-ii
🏷️ Tags
#tree #binary_search_tree #dynamic_programming #backtracking #binary_tree
Description
Given an integer
n, return all the structurally unique BST's (binary search trees), which has exactly n nodes of unique values from 1 to n. Return the answer in any order.Example
Input: n = 3
Output: [[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]
Leetcode-cn.com 2021-09-04
🟢 剑指 Offer 10- I.fei-bo-na-qi-shu-lie-lcof
🏷️ Tags
#memoization #math #dynamic_programming
Description
写一个函数,输入
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
Example
🟢 剑指 Offer 10- I.fei-bo-na-qi-shu-lie-lcof
🏷️ Tags
#memoization #math #dynamic_programming
Description
写一个函数,输入
n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
Example
输入:n = 2
输出:1
Leetcode.com 2021-09-03
🔴 587.erect-the-fence
🏷️ Tags
#geometry #array #math
Description
You are given an array
You are asked to fence the entire garden using the minimum length of rope as it is expensive. The garden is well fenced only if all the trees are enclosed.
Return the coordinates of trees that are exactly located on the fence perimeter.
Example
🔴 587.erect-the-fence
🏷️ Tags
#geometry #array #math
Description
You are given an array
trees where trees[i] = [xi, yi] represents the location of a tree in the garden.You are asked to fence the entire garden using the minimum length of rope as it is expensive. The garden is well fenced only if all the trees are enclosed.
Return the coordinates of trees that are exactly located on the fence perimeter.
Example
Input: points = [[1,1],[2,2],[2,0],[2,4],[3,3],[4,2]]
Output: [[1,1],[2,0],[3,3],[2,4],[4,2]]
Leetcode-cn.com 2021-09-05
🟡 470.implement-rand10-using-rand7
🏷️ Tags
#math #rejection_sampling #probability_and_statistics #randomized
Description
已有方法
不要使用系统的
Example
🟡 470.implement-rand10-using-rand7
🏷️ Tags
#math #rejection_sampling #probability_and_statistics #randomized
Description
已有方法
rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的
Math.random() 方法。Example
输入: 1
输出: [7]
Leetcode.com 2021-09-04
🔴 834.sum-of-distances-in-tree
🏷️ Tags
#tree #depth_first_search #graph #dynamic_programming
Description
There is an undirected connected tree with
You are given the integer
Return an array
Example
🔴 834.sum-of-distances-in-tree
🏷️ Tags
#tree #depth_first_search #graph #dynamic_programming
Description
There is an undirected connected tree with
n nodes labeled from 0 to n - 1 and n - 1 edges.You are given the integer
n and the array edges where edges[i] = [ai, bi] indicates that there is an edge between nodes ai and bi in the tree.Return an array
answer of length n where answer[i] is the sum of the distances between the ith node in the tree and all other nodes.Example
Input: n = 6, edges = [[0,1],[0,2],[2,3],[2,4],[2,5]]
Output: [8,12,6,10,10,10]
Explanation: The tree is shown above.
We can see that dist(0,1) + dist(0,2) + dist(0,3) + dist(0,4) + dist(0,5)
equals 1 + 1 + 2 + 2 + 2 = 8.
Hence, answer[0] = 8, and so on.
Leetcode.com 2021-09-05
🔴 899.orderly-queue
🏷️ Tags
#math #string #sorting
Description
You are given a string
Return the lexicographically smallest string you could have after applying the mentioned step any number of moves.
Example
🔴 899.orderly-queue
🏷️ Tags
#math #string #sorting
Description
You are given a string
s and an integer k. You can choose one of the first k letters of s and append it at the end of the string..Return the lexicographically smallest string you could have after applying the mentioned step any number of moves.
Example
Input: s = "cba", k = 1
Output: "acb"
Explanation:
In the first move, we move the 1st character 'c' to the end, obtaining the string "bac".
In the second move, we move the 1st character 'b' to the end, obtaining the final result "acb".
Leetcode-cn.com 2021-09-07
🟢 1221.split-a-string-in-balanced-strings
🏷️ Tags
#greedy #string #counting
Description
在一个 平衡字符串 中,
给你一个平衡字符串
注意:分割得到的每个字符串都必须是平衡字符串。
返回可以通过分割得到的平衡字符串的 最大数量 。
Example
🟢 1221.split-a-string-in-balanced-strings
🏷️ Tags
#greedy #string #counting
Description
在一个 平衡字符串 中,
'L' 和 'R' 字符的数量是相同的。给你一个平衡字符串
s,请你将它分割成尽可能多的平衡字符串。注意:分割得到的每个字符串都必须是平衡字符串。
返回可以通过分割得到的平衡字符串的 最大数量 。
Example
输入:s = "RLRRLLRLRL"
输出:4
解释:s 可以分割为 "RL"、"RRLL"、"RL"、"RL" ,每个子字符串中都包含相同数量的 'L' 和 'R' 。
Leetcode.com 2021-09-06
🟢 1629.slowest-key
🏷️ Tags
#array #string
Description
A newly designed keypad was tested, where a tester pressed a sequence of
You are given a string
The tester wants to know the key of the keypress that had the longest duration. The
Note that the same key could have been pressed multiple times during the test, and these multiple presses of the same key may not have had the same duration.
Return the key of the keypress that had the longest duration. If there are multiple such keypresses, return the lexicographically largest key of the keypresses.
Example
🟢 1629.slowest-key
🏷️ Tags
#array #string
Description
A newly designed keypad was tested, where a tester pressed a sequence of
n keys, one at a time.You are given a string
keysPressed of length n, where keysPressed[i] was the ith key pressed in the testing sequence, and a sorted list releaseTimes, where releaseTimes[i] was the time the ith key was released. Both arrays are 0-indexed. The 0th key was pressed at the time 0, and every subsequent key was pressed at the exact time the previous key was released.The tester wants to know the key of the keypress that had the longest duration. The
ith keypress had a duration of releaseTimes[i] - releaseTimes[i - 1], and the 0th keypress had a duration of releaseTimes[0].Note that the same key could have been pressed multiple times during the test, and these multiple presses of the same key may not have had the same duration.
Return the key of the keypress that had the longest duration. If there are multiple such keypresses, return the lexicographically largest key of the keypresses.
Example
Input: releaseTimes = [9,29,49,50], keysPressed = "cbcd"
Output: "c"
Explanation: The keypresses were as follows:
Keypress for 'c' had a duration of 9 (pressed at time 0 and released at time 9).
Keypress for 'b' had a duration of 29 - 9 = 20 (pressed at time 9 right after the release of the previous character and released at time 29).
Keypress for 'c' had a duration of 49 - 29 = 20 (pressed at time 29 right after the release of the previous character and released at time 49).
Keypress for 'd' had a duration of 50 - 49 = 1 (pressed at time 49 right after the release of the previous character and released at time 50).
The longest of these was the keypress for 'b' and the second keypress for 'c', both with duration 20.
'c' is lexicographically larger than 'b', so the answer is 'c'.