从小白开始刷算法 数组篇 leetcode.485

简介: 从小白开始刷算法 数组篇 leetcode.485

题目:

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

输入:nums = [1,1,0,1,1,1]

输出:3

解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

能否写出:能写出来

时间:大概20分钟


思路:一开始根据nums[i] == 1判断,答案错误,发现判断最后因没0直接跳过,思路就在循环里打转,后面跳出来,在遍历结束去比较更新,就一次成功了。


class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int count = 0;
        int result = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 1) {
                count++;
                continue;
            }
            result = result = Math.max(count,result);
            count = 0;
        }
        result = Math.max(count,result);
        return result;
    }
}

时间复杂度:O(n)

空间复杂度:O(1)


第二天修改后

初始化计数器 count = 0 和最大连续1的个数 result= 0。

遍历二进制数组:

如果当前元素为1,则将计数器 count 加1。

如果当前元素为0,则将计数器 count 置为0。

更新最大连续1的个数 result ,取 result 和 count 中的较大值。

返回最大连续1的个数 result 。


class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int count = 0;
        int result  = 0;
        for (int num : nums) {
            if (num == 1) {
                count++;
            } else {
                count = 0;
            }
            result= Math.max(result, count);
        }
        return result;
    }
}
相关文章
|
13天前
|
存储 算法 Go
算法学习:数组 vs 链表
算法学习:数组 vs 链表
17 0
|
2天前
力扣随机一题 哈希表 排序 数组
力扣随机一题 哈希表 排序 数组
6 1
|
2天前
|
存储 算法
力扣每日一题 6/20 数学+数组
力扣每日一题 6/20 数学+数组
5 1
|
2天前
|
缓存
力扣每日一题 6/14 动态规划+数组
力扣每日一题 6/14 动态规划+数组
6 1
|
5天前
|
存储 算法 调度
【数据结构与算法】详解循环队列:基于数组实现高效存储与访问
【数据结构与算法】详解循环队列:基于数组实现高效存储与访问
|
13天前
|
算法 Java
[Java·算法·简单] LeetCode 283. 移动零
[Java·算法·简单] LeetCode 283. 移动零
17 2
|
13天前
|
算法 Java
[Java·算法·中等] LeetCode21. 合并两个有序链表
[Java·算法·中等] LeetCode21. 合并两个有序链表
15 2
|
16天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
2天前
|
算法 索引
力扣随机一题 位运算/滑动窗口/数组
力扣随机一题 位运算/滑动窗口/数组
10 0
|
2天前
|
算法 索引
力扣每日一题 6/28 动态规划/数组
力扣每日一题 6/28 动态规划/数组
5 0