LeetCode:485. Max Consecutive Ones

来源:互联网 发布:少女韩版书包淘宝 编辑:程序博客网 时间:2024/06/08 04:19

题目链接:

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)

0 0
原创粉丝点击