解法一
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