leetcode1004.最大连续1的个数III
二月 21, 2020
leetcode1004. 最大连续1的个数 III
给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。
返回仅包含 1 的最长(连续)子数组的长度。
示例 1:
输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2
输出:6
解释:
[1,1,1,0,0,1,1,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 6。
示例 2:
输入:A = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
输出:10
解释:
[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 10。
滑动窗口。没有用到评论区那些花里胡哨的,就是一个窗口右边进来怎么处理,左边要出去怎么处理。只不过这么写时间复杂度很高。
1 | public int longestOnes(int[] A, int K) { |
在这之后我看了一下4ms的代码,发现差不多。我觉得唯一的差别可能在于最后的比较最大值上面。如果用max函数是9ms,if-else是8ms,而三目运算符只用了 6ms,这个差距还是很大的。但是也不能一概而论,三目运算符不一定永远比if-else快,因为前者还可能会有类型转换的问题。
leetcode 8/100
查看评论