自学内容网 自学内容网

力扣【485-最大连续1的个数】【数组-C语言】

题目:力扣-485

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

方法1: 遇到连续的1就累加和sum,遇到0时,用max先记录当前最小连续1的个数,然后置sum=0,重新开始累计,若给定二进制数组是以1为最后一个元素,则程序最后再次更新max

int findMaxConsecutiveOnes(int* nums, int numsSize) {
    int sum = 0, max = 0;
    for (int i = 0; i < numsSize; i++) {
        if (nums[i] == 1) {
            sum++;
        } else {//遇到0,sum要归0之前先保存最大连续1的个数
            if (sum > max)
                max = sum;
            sum = 0;
        }
    }
    if (sum > max)
        max = sum;
    return max;
}

时间复杂度O(n)

方法2:双指针

int findMaxConsecutiveOnes(int* nums, int numsSize) {
int i,j,max=0;
i=j=0;
while(i<numsSize){
if(nums[i]==1){
i++;
max=Max(i-j,max);//Max返回两者中较大的数(略)
}else{
i++;
j=i;
}
}
return max;
}

时间复杂度:O(n)


原文地址:https://blog.csdn.net/m0_50525151/article/details/142579933

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!