算法刷题:最大连续1的个数

最大连续1的个数

  • .
  • 题目链接
  • 题目详情
  • 题目解析
  • 算法原理
    • 滑动窗口
    • 定义指针和其他变量
    • 进窗口
    • 判断
    • 出窗口
    • 结束
    • 更新结果
  • 我的答案

.

题目链接

最大连续1的个数

题目详情

题目解析

将题目转化为求一个最长的字串,字串中0的个数不能大于k个

算法原理

滑动窗口

这道题采用滑动窗口的思想

定义指针和其他变量

int left = 0,right = 0,//两个同向指针

n = nums.length,//数组长度

zero = 0,//计数器,计算零的个数

ret = 0;//返回值,最长的子串的长度

进窗口

right所指的位置上如果是0,则让计数器加一,并在执行一次逻辑过后向右移动一位

判断

判断当前窗口内零的个数是否大于k

出窗口

如果left当前所指的位置是0,则计数器减一,并跳过当前位置,往右移动一位,然后继续进入判断环节,直到窗口合法

结束

当right到达数组结尾的时候

更新结果

当窗口内的数据处于合法的时候,就可以更新结果

我的答案

java 复制代码
class Solution {
    public int longestOnes(int[] nums, int k) {
        //定义指针
        int left = 0,right = 0,n = nums.length,zero = 0,ret = 0;
        for(;right<n;right++){
            //进窗口
            //如果是0,计数器加1
            if(nums[right]==0) zero++;
            //判断
            while(zero>k){
                //不合法则出窗口
                //如果是0,zero减一,并让left左移
                if(nums[left++]==0) zero--;
            }
            //窗口内数据合法,更新结果
            ret = Math.max(ret,right-left+1);
        }
        //返回结果
        return ret;
    }
}
相关推荐
唯道行2 分钟前
计算机图形学·21 梁友栋-Barsky直线裁剪算法与三维直线裁剪
人工智能·算法·机器学习·计算机视觉·计算机图形学·opengl
魂梦翩跹如雨4 分钟前
Java BigDecimal与RoundingMode的用法总结
java·算法
little~钰6 分钟前
线段树和扫描线结合
数据结构·算法
CoderYanger11 分钟前
动态规划算法-简单多状态dp问题:11.按摩师
开发语言·算法·leetcode·职场和发展·动态规划·1024程序员节
秋深枫叶红12 分钟前
嵌入式第二十八篇——数据结构——队列
数据结构·学习·算法
2***b8817 分钟前
【语义分割】12个主流算法架构介绍、数据集推荐、总结、挑战和未来发展
算法·架构
唯道行22 分钟前
计算机图形学·20 绘制(Implementation)1与Cohen-Sutherland算法
人工智能·算法·计算机视觉·计算机图形学·opengl
严文文-Chris23 分钟前
反向传播算法是什么?和神经网络的关系?
人工智能·神经网络·算法
CoderYanger23 分钟前
动态规划算法-路径问题:10.地下城游戏
开发语言·算法·leetcode·游戏·职场和发展·动态规划·1024程序员节
liu****24 分钟前
11.字符函数和字符串函数(二)
c语言·开发语言·数据结构·c++·算法