最大连续 1 的个数

2023-12-15 19:12:35

题意:

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

示例 1:

输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

示例 2:

输入:nums = [1,0,1,1,0,1]
输出:2

提示:

  • 1 <= nums.length <= 10^5
  • nums[i] 不是 0 就是 1.

题目来源: https://leetcode.cn/problems/max-consecutive-ones/description/

解题方法:

方法一:循环
遍历数组,遇到1就count++
看看count有没有超过最大纪录,超过了就更新纪录
如果遇到的不是1,就count归零
最后返回最大纪录

// 循环
function findMaxConsecutiveOnes($nums) {
    $count = $max = 0;
    foreach($nums as $num){
        if($num == 1){
            $count++;
            if($count > $max){
                $max = $count;
            }
        }else{
            $count = 0;
        }
    }
    return $max;
}

方法二:内置函数(拆分)

// 拆分
function findMaxConsecutiveOnes($nums) {
    return strlen(max(explode('0',implode('',$nums))));
}

参考:
作者:笨猪爆破组
链接:https://leetcode.cn/problems/max-consecutive-ones/solutions/604189/yi-ci-bian-li-485-zui-da-lian-xu-1de-ge-o30sy/
来源:力扣(LeetCode)

方法二:双指针

 // 双指针
function findMaxConsecutiveOnes($nums) {
    $slow = $quick = 0;
    $max = $i = 0;
    array_push($nums, 0);   //末尾添加0方便运算
    while($quick < count($nums))
    {
        if($nums[$quick] == 1){
            $quick++;
        }else{
            $max = max($max, ($quick - $slow));
            $quick++;
            $slow = $quick;
        }
    }
    return $max;
}

参考:
作者:阿狸喜欢鸡肉卷
链接:https://leetcode.cn/problems/max-consecutive-ones/solutions/1321098/shuang-zhi-zhen-by-alixihuanjiroujuan-1ydm/
来源:力扣(LeetCode)

文章来源:https://blog.csdn.net/weixin_43741253/article/details/135020362
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。