给定一个最大数组,求出数组中1出现的最大次数。
事例:
输入: [1,1,0,1,1,1]
输出: 3
解释: 前两位数出现了两次1,后三位数出现了三次1,因此1出现的最大次数为3次。
注意⚠️:
- 数组中只包含0和1
- 数组长度为正整数,并且不会超过10000
leetcode 传送门 :leetcode.com/problems/ma…
好,看完题目要求后我们开始来解题,这道题其实非常简单,说说我的思路:
- maximum接收数组中1出现的最大次数
- current接收数组中当前1出现的最大次数
- 可以将数组中连续的1看成一组,当数组中1出现的最大次数已经超出数组的长度的一半,说明其他分组中1出现的次数不会更大了,此时就可以结束计算。
解题如下:
public class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int maximum = 0;
int current = 0;
for (int num : nums) {
if (num == 1){
current++;
}else {
if (current > maximum){
maximum = current;
}
if (maximum >= nums.length / 2){
return maximum;
}
current = 0;
}
}
return Math.max(maximum, current);
}
}