给定一个二进制数组, 计算其中最大连续 1 的个数。
输入:[1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
提示:
输入的数组只包含 0 和 1 。
输入数组的长度是正整数,且不超过 10,000。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/max-consecutive-ones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1、Python函数声明中 -> List[int] 的含义
新增语法:说明参数和返回值的数据类型。
class Solution:
def arrayPairSum(self, nums: List[int]) -> int:
return sum(sorted(nums)[0::2])
-> List[int] 表示该函数应返回一个整数列表。
nums: List[int], target: int表示nums是整数列表,target是整数。
2、python获取列表list里元素下标的方法:使用enumerate函数
enumerate() 函数用于将一个可遍历的数据对象组合成一个索引序列,同时列出数据的和数据的下标,多用于for循环中。
if __name__ == '__main__':
list = [(1, 1), (2, 2), (3, 3), (4, 4)]
for i, (x, y) in enumerate(list):
print(i, ": ", x, y)
打印结果:
0 : 1 1
1 : 2 2
2 : 3 3
3 : 4 4
3、python中max()函数
语法:
max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])
参数介绍:
默认数值型参数,取值大者;
字符型参数,取字母表排序靠后者。
key—可做为一个函数,用来指定取最大值的方法。
default—用来指定最大值不存在时返回的默认值。
arg1—字符型参数/数值型参数,默认数值型
4、数组开头为1的情况需要考虑如:【1,1,1,0,1,1,】
index=-1
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
pre,flag=0,0
index=-1
for key, num in enumerate(nums):
if num == 0:
index = key
else:
flag = key
pre = max(flag - index, pre)
return pre
class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int flag = 0;
int ans = 0;
for (int num : nums) {
if (num != 1) {
flag = 0;
continue;
}
flag++;
ans = Math.max(ans, flag);
}
return ans;
}
}