最大连续 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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!