给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
示例 1:
输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
示例 2:
输入:nums = [1,0,1,1,0,1]
输出:2
作者:力扣 (LeetCode)
链接:https://leetcode.cn/leetbook/read/array-and-string/cd71t/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目较为简单,基本思路就是用一个变量保存已经得到的连续1个数的最大值,用一个变量保存当前得到的连续1的个数,不断的去跟新最大值。
两个方向:
1.记录连续1的个数,当nums[i]为0时清零当前连续1的个数。
2.记录连续1的开始位置,既0的位置坐标,当nums[i]为1时计算并更新最大值,当nums[i]为0时更新0的坐标。
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int max_num = 0, temp = 0, zero = -1;
for (int i = 0; i < nums.size(); i++)
{
#if 0
if(nums[i]==1){
temp++;
}else{
temp=0;
}
max_num = max(max_num,temp);
#endif
if (nums[i] == 0)
{
zero = i;
continue;
}
else
{
max_num = max(max_num, i - zero);
}
}
return max_num;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)