1、总结
- 除了拖得比较久,这道题暂时没有总结
2、题目
Given a binary array, find the maximum number of consecutive 1s in this array.
Example 1:
Input: [1,1,0,1,1,1]
Output: 3
Explanation:
The first two digits or the last three digits are consecutive 1s.
The maximum number of consecutive 1s is 3.
Note:
- The input array will only contain 0 and 1.
- The length of input array is a positive integer and will not exceed 10,000
3、我的方法
方法一:统计最长连续的1
/**
* @param {number[]} nums
* @return {number}
*/
// 方法一:
var findMaxConsecutiveOnes = function(nums) {
let maximum = 0;
let tempCount = 0;
for(let i = 0; i < nums.length; i++) {
if(nums[i] == 1) {
tempCount += 1;
} else {
maximum = Math.max(tempCount, maximum);
tempCount = 0;
}
}
maximum = Math.max(tempCount, maximum);
return maximum;
};
稍微优化一下代码:
/**
* @param {number[]} nums
* @return {number}
*/
// 方法二:
var findMaxConsecutiveOnes = function(nums) {
let maximum = 0;
let tempCount = 0;
for(let i = 0; i < nums.length; i++) {
// if(nums[i] == 1) {
// tempCount += 1;
// } else {
// maximum = Math.max(tempCount, maximum);
// tempCount = 0;
// }
tempCount = ( nums[i] == 0 ? 0 : tempCount+1 );
maximum = Math.max(tempCount, maximum);
}
return maximum;
};
4、其他方法
试了一个其他解法,效率不高:
/**
* @param {number[]} nums
* @return {number}
*/
// 方法三:
var findMaxConsecutiveOnes = function(nums) {
let maximum = 0;
let tempCount = 0;
for(let i = 0; i < nums.length; i++) {
tempCount = (tempCount + nums[i]) * nums[i];
maximum = Math.max(tempCount, maximum);
}
return maximum;
};