8.png

解法一

max: 记录最大连续为1数
count: 记录当前连续为1数

遍历数组 如果当前是1就count++,然后比较max和count, max = max(max,count) 如当前是0则count=0, 后把max返回。

/*
* @lc app=leetcode.cn id=485 lang=java
*
* [485] 最大连续 1 的个数
*/
// Time Complexity: O(n)
// Spatial Complexity: O(1)
// @lc code=start
class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int count = 0;
        int max = 0;
        for(int i =0 ; i< nums.length; i++){
            if(nums[i] == 1){
                count++;
                if(count > max){
                    max = count;
                }
            }else{
                count = 0;
            }
        }
        return max;
        
    }
}
// @lc code=end

/*
* @lc app=leetcode.cn id=485 lang=javascript
*
* [485] 最大连续 1 的个数
*/

// Time complexity:  O(n)
// spatiay complexity : O(1)
// @lc code=start
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxConsecutiveOnes = function(nums) {
    let max = 0;
    let count = 0;
    nums.forEach(item=>{
        if(item == 1){
            count++;
            if(count > max){
                max = count
            }
        }else{
            count = 0;
        }
    })
    return max;
};
// @lc code=end

解法二 效率非常低的解法

先将数组转成字符串, 然后根据‘0’切割, 得到的数组再遍历,找到最长的子串, 这就是最大连续1的个数了。

/*
* @lc app=leetcode.cn id=485 lang=java
*
* [485] 最大连续 1 的个数
*/
// Time Complexity: O(n)
// Spatial Complexity: O(n)
// @lc code=start
class Solution {
    public static int findMaxConsecutiveOnes(int[] nums) {
        String str = "";
        for(int i =0 ; i< nums.length ; i++){
            str += String.valueOf(nums[i]);
        }
        String[] arr = str.split("0");
        int count = 0;
        for(int i =0 ; i< arr.length ; i++){
            if(arr[i].length() > count){
                count = arr[i].length();
            }
        }
        return count;
    }
}

/*
* @lc app=leetcode.cn id=485 lang=javascript
*
* [485] 最大连续 1 的个数
*/

// Time complexity:  O(n)
// spatiay complexity : O(1)
// @lc code=start
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxConsecutiveOnes = function(nums) {
    let str = '';
    nums.forEach(item=> str+= item)
    let arr = str.split('0');
    let count = 0;
    arr.forEach(item=>{ count = item.length > count ? item.length : count })
    return count;
};
// @lc code=end