力扣 485. 最大连续 1 的个数

题目

给定一个二进制数组, 计算其中最大连续 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

Python实现
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

力扣 485. 最大连续 1 的个数_第1张图片

Java实现
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;
    }
}

力扣 485. 最大连续 1 的个数_第2张图片

你可能感兴趣的:(力扣,java)