当前位置: 首页 > news >正文

刷题笔记 day8

1004 最大连续1的个数 III

        这道题要求将原数组中的0翻转成1,求出最大元素全是1的子数组长度,看这道题第一感觉还要将里面的0变成1,感觉这道题解决起来很麻烦,但是我们可以转变思路,找出其最大子数组,使得子数组里面0元素的个数不超过 k,然后求其子数组长度。

算法步骤:

        1. 利用同向指针 left 和 right 指向数组的第一个下标位置;

        2. 让 right 指针往数组后面走,使用记录 0 个数的变量 count ;

            当count > k 时,说明 [left,right)区间内 0 的个数已经大于  k  ;

            然后让 left 往右走 , 减小 0 的个数即--count,当 count 不大于 k 时结束,

       3. 更新子数组长度的结果。

class Solution {
public:int longestOnes(vector<int>& nums, int k) {int left =0,  right = 0 ;int maxSum = 0; //记录最长子数组的长度int count = 0; // 记录 0 的个数while(right < nums.size()){if(nums[right] == 0){++count;}while(count > k){if(nums[left++] ==0){--count;}}//更新结果maxSum = max(maxSum,right-left+1);++right;}return maxSum;}
};

 

http://www.lryc.cn/news/111710.html

相关文章:

  • C 语言的表达式
  • C++设计模式创建型之单例模式
  • 杂记 | 记录一次使用Docker安装gitlab-ce的过程(含配置交换内存)
  • MyBatis@Param注解的用法
  • Shader 编程:GLSL 重要的内置函数
  • 浏览器同源策略
  • GD32F103的EXTI中断和EXTI事件
  • 了解 spring MVC + 使用spring MVC - springboot
  • C#中的Invoke
  • Hive终端命令行打印很多日志时,如何设置日志级别
  • Android的PopupWindow(详细版)
  • Navicat远程连接Linux的MySQL
  • Spring IOC
  • 华为OD机试真题【上班之路】
  • 【linux源码学习】【实验篇】使用bochs运行linux0.11系统(搭建一个自己的工作站)
  • java+springboot+mysql个人日记管理系统
  • 旋转图像 LeetCode热题100
  • Vue3 element-plus表单嵌套表格实现动态表单验证
  • VSCode插件Todo Tree的使用
  • 无人驾驶实战-第五课(动态环境感知与3D检测算法)
  • Tomcat 的内存配置
  • pycharm出现python test运行报错(pytest模式)
  • JavaScript篇 this指向
  • 操作系统复习总结1
  • Matlab中图的最短路径
  • 没有jodatime,rust里怎么将字符串转为日期呢?
  • 【Markdown入门及使用】
  • 大数据面试题:HBase的读写缓存
  • springboot基于vue的高校迎新系统的设计与实现8jf9e
  • JVM入门到精通