原创:
int findMaxConsecutiveOnes(int* nums, int numsSize)
{
int iContinuCount = 0; /* 记录连续计数的数值 */
int iContinuCountMax = 0; /* 记录连续计数的最大值 */
if(nums == NULL || numsSize == 0)
{
return 0;
}
else
{
for(int i = 0; i< numsSize; i++)
{
if(nums[i] != 1 && nums[i] != 0) /* 如果输入非法,则结束运行 */
{
return 0;
}
else if (nums[i] == 1 && i == 0) /* 第0个数组的值 */
{
iContinuCount += 1;
}
else if(nums[i] == 1 && nums[i - 1] == 1) /* 如果数组第i个的值与第i-1的值都为1, 连续计数值加1 */
{
iContinuCount += 1;
}
else if(nums[i] == 1 && nums[i - 1] == 0) /* 如果数组第i个的值与第i-1的值都为1,连续计数值加1 */
{
iContinuCount += 1;
}
else if(nums[i] == 0) /* 如果遇到值为0时,连续计数值清0 */
{
iContinuCount = 0;
}
if(iContinuCount > iContinuCountMax) /* 连续计数值和连续计数值最大值做判断 */
{
iContinuCountMax = iContinuCount;
}
}
}
return iContinuCountMax;
}
借鉴:
int findMaxConsecutiveOnes(int* nums, int numsSize)
{
int iContinuCount = 0, iContinuCountMax = 0;
for(int i = 0; i< numsSize; i++)
{
if(nums[i] == 1)
{
iContinuCount ++;
iContinuCountMax = fmax(iContinuCountMax, iContinuCount); /* 该函数可以减少代码量 */
}
else
{
iContinuCount = 0;
}
}
return iContinuCountMax;
总结:
永远不要等待,等待没有结果,结果是自己去寻找的!