1004. 最大连续1的个数 III
给定一个二进制数组 nums
和一个整数 k
,如果可以翻转最多 k
个 0
,则返回 数组中连续 1
的最大个数 。
示例 1:
输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2 |
示例 2:
输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3 |
提示:
1 <= nums.length <= 105
nums[i]
不是0
就是1
0 <= k <= nums.length
C++
- 第二部分正常二维遍历会超时
- lower_bound使用二分法返回 参数1,参数2 范围内第一个不小于 参数3的迭代器
class Solution { |
554. 砖墙
你的面前有一堵矩形的、由 n
行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和相等。
你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。
给你一个二维数组 wall
,该数组包含这堵墙的相关信息。其中,wall[i]
是一个代表从左至右每块砖的宽度的数组。你需要找出怎样画才能使这条线 穿过的砖块数量最少 ,并且返回 穿过的砖块数量 。
示例 1:
输入:wall = [[1,2,2,1],[3,1,2],[1,3,2],[2,4],[3,1,2],[1,3,1,1]] |
示例 2:
输入:wall = [[1],[1],[1]] |
提示:
n == wall.length
1 <= n <= 104
1 <= wall[i].length <= 104
1 <= sum(wall[i].length) <= 2 * 104
- 对于每一行
i
,sum(wall[i])
是相同的 1 <= wall[i][j] <= 231 - 1
C++
public: |
1011. 在 D 天内送达包裹的能力
传送带上的包裹必须在 days
天内从一个港口运送到另一个港口。
传送带上的第 i
个包裹的重量为 weights[i]
。每一天,我们都会按给出重量(weights
)的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。
返回能在 days
天内将传送带上的所有包裹送达的船的最低运载能力。
示例 1:
输入:weights = [1,2,3,4,5,6,7,8,9,10], days = 5 |
示例 2:
输入:weights = [3,2,2,4,1,4], days = 3 |
示例 3:
输入:weights = [1,2,3,1,1], days = 4 |
提示:
1 <= days <= weights.length <= 5 * 104
1 <= weights[i] <= 500
C++
class Solution { |
1190. 反转每对括号间的子串
给出一个字符串 s
(仅含有小写英文字母和括号)。
请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。
注意,您的结果中 不应 包含任何括号。
示例 1:
输入:s = "(abcd)" |
示例 2:
输入:s = "(u(love)i)" |
示例 3:
输入:s = "(ed(et(oc))el)" |
示例 4:
输入:s = "a(bcdefghijkl(mno)p)q" |
提示:
1 <= s.length <= 2000
s
中只有小写英文字母和括号- 题目测试用例确保所有括号都是成对出现的
C++
- 栈
class Solution { |
- 递归
class Solution { |
781. 森林中的兔子
森林中有未知数量的兔子。提问其中若干只兔子 “还有多少只兔子与你(指被提问的兔子)颜色相同?” ,将答案收集到一个整数数组 answers
中,其中 answers[i]
是第 i
只兔子的回答。
给你数组 answers
,返回森林中兔子的最少数量。
示例 1:
输入:answers = [1,1,2] |
示例 2:
输入:answers = [10,10,10] |
提示:
1 <= answers.length <= 1000
0 <= answers[i] < 1000
C++
class Solution { |