485题 力扣入门系列 c语言编写

 题目:

 思想:

 

 

 我的代码

int findMaxConsecutiveOnes(int* nums, int numsSize)
{
    int maxsize = 0, size = 0;
    for (int i = 0; i < numsSize; i++)
    {
 
        if (nums[i] == 1)      //我的判断位置
        {
            maxsize++;
            if (maxsize > size)
            {
                size = maxsize;
            }
         
        }
        else
        {
            maxsize = 0;

        }
    }
    return  size;
}

官方代码

int findMaxConsecutiveOnes(int* nums, int numsSize) {
    int maxCount = 0, count = 0;
    for (int i = 0; i < numsSize; i++) {
        if (nums[i] == 1) {
            count++;
        } else {
            maxCount = fmax(maxCount, count);
            count = 0;
        }
    }
    maxCount = fmax(maxCount, count);
    return maxCount;
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/max-consecutive-ones/solution/zui-da-lian-xu-1de-ge-shu-by-leetcode-so-252a/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 个人优缺点

缺点

      maxCount = fmax(maxCount, count);

官方回答调用了系统函数,

不过建议新手自己写。

优点:(下面有例子,文字看不懂没问题)

在判断中我判断是否记录入maxsize位置与官方不一致。(建议(边看代码,边往下看)

其原因在于在我的判断发生在每一次记录成功之时,也就是nums【i】=1;这样每一次这个条件判断成功,就会于之前的maxsize发生比较。

而官方代码是nums【i】!=1时进行比较。也就是说尽管count已经大于原来的数,但还要nums【i】!=1时才比较,所以在最后还要在循环结束后计较一番    

例子:

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值