LeetCode:485. Max Consecutive Ones

题目链接:

485. Max Consecutive Ones


题目描述:

Given a binary array, find the maximum number of consecutive 1s in this array.
Input: [1,1,0,1,1,1]
Output: 3
Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.


题目解释:

给定一个二进制数组,数组中存放的都是0,1两个整数,求 这个数组中连续整数1的长度。例如给定输入数组:[1,1,0,1,1,1],这个数组的最大连续1长度为3.数组中第一位和第二位为连续的两个1,第三位、第四位和第五位为连续的3个1,所以最大长度为3.


解题方案:

寻找最大连续1的长度,我们只要对数组遍历一边即可,在遍历过程中纪录当前连续块的长度,当碰见0中断连续时,终止计数,并与之前保存的连续块最大长度进行比较,保留最大连续长度。然后继续前行,当碰见1时再重新计数。这样到遍历完整个数组之后,变量中保留的就是最大连续长度。


AC代码:

class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {

      int len = nums.size();
      int pre_max = 0;

      for(int i = 0; i < len; ) {

        if(nums[i] == 1) {
          int max = 1;

          while(nums[++i] == 1) {
            max++;
          }
          if(max > pre_max) {
            pre_max = max;
          }
        } else {
          i++;
        }
      }
      return pre_max;
    }

};

此种解法的时间复杂度为O(N)

你可能感兴趣的:(算法技巧,leetcode)