「小白leetcode刷题之路🚀(一)」Max Consecutive Ones

205 阅读1分钟

给定一个最大数组,求出数组中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);
    }
}