LeetCode_485_数组_最大连续 1 的个数

Posted 軒邈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode_485_数组_最大连续 1 的个数相关的知识,希望对你有一定的参考价值。

原创:

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;

总结:

永远不要等待,等待没有结果,结果是自己去寻找的!

以上是关于LeetCode_485_数组_最大连续 1 的个数的主要内容,如果未能解决你的问题,请参考以下文章

485-最大连续1的个数

LeetCode_697_数组_数组的度

LeetCode_697_数组_数组的度

485. 最大连续1的个数

485. 最大连续1的个数

485 Max Consecutive Ones 最大连续1的个数