Leetcode485

Leetcode485:最大连续1的个数

题目描述

示例 1:

输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
注意:

输入的数组只包含 01。
输入数组的长度是正整数,且不超过 10,000

解法一:基于sort的暴力法

class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {
        int flag = 0;
        vector<int> max;
        for (int i = 0; i<nums.size(); i++)
        {
            if (nums[i] == 1)
            {
                flag++;
            }
            else if (nums[i] == 0)
            {
                max.push_back(flag);
                flag = 0;
            }
        }
        max.push_back(flag);
        sort(max.begin(), max.end());
        return max[max.size() - 1];

    }
};

解法二:简洁方法

class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {
        int max = 0, num = 0;
        for (int i = 0; i<nums.size(); i++)
        {
            if (nums[i] == 1)
                num++;
            else
                num = 0;
            max = max>num ? max:num;
        }
        return max;
    }
};

   转载规则


《Leetcode485》 赵小亮 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
剑指offer05 剑指offer05
剑指offer05:替换空格 题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解法一:判断空格,后移两位元素clas
2020-04-30
下一篇 
剑指offer42 剑指offer42
剑指offer42:和为S的两个数字 题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数, 使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 解
2020-04-26
  目录