力扣【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)!