滑动窗口刷题(二)

目录

1.最大连续1的个数 III

1.题目解析

2.算法原理

2.1暴力枚举(不过多介绍)

2.2双指针优化

3.代码编写

2. 将 x 减到 0 的最小操作数

1.题目解析

2.算法原理

2.1滑动窗口

3.代码编写

3. 水果成篮

1.题目解析

2.算法思路

2.1滑动窗口+哈希表


1.最大连续1的个数 III

1.题目解析

2.算法原理

2.1暴力枚举(不过多介绍)

int longestOnes(vector<int>& nums, int k) {int n = nums.size();int ret = 0;for(int i = 0; i<n; i++){int t = k;int cnt = 0;for(int j = i; j<n; j++){if(nums[j] == 1){cnt++;}else if(nums[j] == 0){t--;if(t < 0){break; }cnt++;}ret = max(ret,j-i+1);}}return ret; 
}

2.2双指针优化

在暴力解法中发现,两个指针是同向一起向后走,考虑双指针优化。

将问题转化为维护一个区间,区间内部的0的个数不能超过k。求最长的区间。

进窗口:遍历数组如果nums[right] == 0,计数器cnt--

判断:区间内0的个数是否超过k

出窗口:left++直到区间内0的个数小于k

3.代码编写

 int longestOnes(vector<int>& nums, int k) {int left = 0,right = 0;int ret = 0, cnt = 0;while(right < nums.size()){if(nums[right] == 0){cnt++;}while(cnt > k){   if(nums[left] == 0){cnt--;}left++; }ret = max(ret,right - left +1);right++;}return ret;}

2. 将 x 减到 0 的最小操作数

1.题目解析

这道乍一看,左边减一次,右边见一次很不好处理,这个时候用逆向思维可以很好解决问题。

让操作次数最短,就是让左右两边的和为x长度加起来最短,转换一下,让中间部分和为sum-x最长(sum为整个数组的和)。

求和为sum-x的最长子数组

2.算法原理

2.1滑动窗口

求数组整体的和sum

进窗口:遍历数组cnt += nums[right]

判断:cnt的值是否大于target

出窗口:cnt -= nums[left]

3.代码编写

int minOperations(vector<int>& nums, int x) {int sum = 0;for(int i : nums){sum += i;}int target = sum - x;int  n = nums.size();if(target < 0)return -1;int cnt = 0;int ret = -1;for(int left = 0,right = 0; right < nums.size(); right++){cnt += nums[right];while(cnt > target){cnt -= nums[left];left++;}if(cnt == target)ret = max(ret,right-left+1);}return ret == -1 ? -1 : n -ret ;}

3.最大连续1的个数 III

1.题目解析

说了一大堆翻译成人话就是

求数字种类不超过2种的最长子数组。(1,2就是不同的水果种类)

2.算法思路

2.1滑动窗口+哈希表

进窗口:进哈希表,数字种类++。

判断:哈希表的大小是否大于2

出窗口:将left指针指向的元素,在哈希表中数字种类--,减为0之后删除,直到哈希表的大小小于2。

int totalFruit(vector<int>& fruits) {//找一个最长连续的子数组,子数组内的类型不能超过2种unordered_map<int,int> hash;int ret = 0;int left = 0, right = 0;while(right < fruits.size()){   hash[fruits[right]]++;//进窗口while(hash.size() > 2)//判断{ hash[fruits[left]]--;//出窗口if(hash[fruits[left]] == 0){hash.erase(fruits[left]);}left++;}ret = max(ret,right-left+1);right++;}return ret;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Android的校园请假App的研究与实现

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

每日五道java面试题之spring篇(五)

目录&#xff1a; 第一题. 使用 Spring 有哪些方式&#xff1f;第二题. 什么是Spring IOC 容器&#xff1f;第三题. 控制反转(IoC)有什么作用?第四题. IOC的优点是什么&#xff1f;第五题. BeanFactory 和 ApplicationContext有什么区别&#xff1f; 第一题. 使用 Spring 有哪…

前沿科技速递——YOLOv9

随着YOLO系列的不断迭代更新&#xff0c;前几天&#xff0c;YOLO系列也迎来了第九个大型号的更新&#xff01;YOLOv9正式推出了&#xff01;附上原论文链接。 arxiv.org/pdf/2402.13616.pdf 同样是使用MS COCO数据集进行对比比较&#xff0c;通过折线图可看出AP曲线在全方面都…

018—pandas 生成笛卡尔积排列组合合并多列字符串数据

思路&#xff1a; 本需求需要将给定的几列数据&#xff0c;生成一个排列组合形式的数据列&#xff0c;利用到 Pandas 多层索引生成的笛卡尔积的方法。 二、使用步骤 1.引入库 代码如下&#xff08;示例&#xff09;&#xff1a; import pandas as pd2.读入数据 代码如下&…

手写redux和applyMiddleware中间件react示例

目录 一 核心代码 1.reducer 2.store.js 二 关于context API的使用 1. MyContext 2. createContext 3. ContextProvider 4. connect 三 组件验证效果 1. Todo 2. TodoList 3.TodoItem 4.TodoInput 5. App组件引入Todo组件 一 核心代码 1.reducer // 新增列表数…

发布订阅模式:观察者模式的一种变体

发布-订阅模型&#xff08;Publish-Subscribe Model&#xff09;的底层机制通常基于观察者模式。 发布-订阅模型是观察者模式的一种变体。 在观察者模式中&#xff0c;主题&#xff08;或被观察者&#xff09;维护了一组观察者&#xff0c;当主题的状态发生变化时&#xff0c…

【Postman+Newman】接口自动化测试以及测试报告输出

Newmanpostman自动化测试 postmanPre-request Script前置脚本 Newman测试报告输出 postman 学习postman脚本编写 Pre-request Script前置脚本 Newman 测试报告输出 输出报告时使用的命令&#xff1a;     -r html,json,junit 指定生成html&#xff0c;json&#xff0c…

零基础学编程,编程简单学,中文编程工具下载及工具箱进度条构件的用法

一、前言 今天给大家分享的中文编程开发语言工具 进度条构件的用法。 编程入门视频教程链接 https://edu.csdn.net/course/detail/39036 编程工具及实例源码文件下载可以点击最下方官网卡片——软件下载——常用工具下载——编程工具免费版下载及实例源码下载。 进度条 进度…

设计一个 shell 命令行程序

目录 实现 shell 主要思路 代码&#xff08;Linux&#xff09;系统 实现 shell 主要思路 1、要知道一个 shell 进程在运行起来都会在命令行呈现什么&#xff0c;如图是Xshell 登录成功后的界面&#xff1a;所以第一步要做的就是打印命令行提示符。 Xshell 命令行提示符的组…

Android进阶之旅(第5天)

充实的一天又过去了&#xff0c;今天真的好冷啊&#xff0c;我们这里雪很大&#xff0c;早上最傻逼的决定就是穿了一个短的棉袜出来&#xff0c;漏脚踝&#xff0c;冷成傻子 接下来老规矩&#xff0c;看下昨天计划的完成情况&#xff1a; 今日计划&#xff1a; 1.过bug 2.看…

Vivado MIG ip核使用教程

Step 1 在ip catalog中搜索mig ip核并打开&#xff0c;检查硬件配置 Step 2 Step 3 选择对其他芯片类型的兼容性&#xff0c;若无此方面需求&#xff0c;可直接点击next Step 4 选择存储器类型 Step 5 配置DDR3芯片工作频率、用户时钟、mig ip核输入时钟、DDR3芯片类型…

《隐私计算简易速速上手小册》第2章:关键技术介绍(2024 最新版)

文章目录 2.1 同态加密2.1.1 基础知识2.1.2 主要案例:云计算数据分析2.1.3 拓展案例 1:医疗数据分析2.1.4 拓展案例 2:金融风险评估2.2 安全多方计算(SMC)2.2.1 基础知识2.2.2 主要案例:跨机构金融数据共享2.2.3 拓展案例 1:医疗研究合作2.2.4 拓展案例 2:跨国界数据交…

Echarts —— 关系图+路径图+散点图(动态箭头)

文章目录 1 效果预览2 实现代码 1 效果预览 可将以下代码复制到Echarts示例在线预览效果 2 实现代码 const categories [{name: 数据中心,symbol:path://M936.33 732.203c-9.872-10.814-23.349-17.123-37.953-17.778-14.849-0.451-28.613 4.383-39.427 14.255-0.215 0.195-0.…

【初始RabbitMQ】发布订阅的实现

发布确认原理 生产者将信道设置成 confirm 模式&#xff0c;一旦信道进入 confirm 模式&#xff0c;所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始)&#xff0c;一旦消息被投递到所有匹配的队列之后&#xff0c;broker 就会发送一个确认给生产者(包含消息的…

Linux之ACL权限chmod命令

一. chmod命令 chmod命令来自英文词组change mode的缩写&#xff0c;其功能是改变文件或目录权限的命令。默认只有文件的所有者和管理员可以设置文件权限&#xff0c;普通用户只能管理自己文件的权限属性。 设置权限时可以使用数字法&#xff0c;亦可使用字母表达式&#xff0…

GO-ICP的使用(一)

一、代码下载以、修改以及使用 下载&#xff1a; 链接&#xff1a;yangjiaolong/Go-ICP: Implementation of the Go-ICP algorithm for globally optimal 3D pointset registration (github.com) 解压之后 &#xff1a; 首先visual studio项目&#xff0c;配置好PCL环境&…

更简单地介绍 CUDA

这篇文章是对 CUDA 的超级简单介绍&#xff0c;CUDA 是 NVIDIA 流行的并行计算平台和编程模型。我之前在2013年写过一篇文章《CUDA简单介绍》&#xff0c;多年来一直很受欢迎。但 CUDA 编程变得更加容易&#xff0c;GPU 也变得更快&#xff0c;所以是时候进行更新&#xff08;甚…

SQL-Labs46关order by注入姿势

君衍. 四十六关 ORDER BY数字型注入1、源码分析2、rand()盲注3、if语句盲注4、时间盲注5、报错注入6、Limit注入7、盲注脚本 四十六关 ORDER BY数字型注入 请求方式注入类型拼接方式GET报错、布尔盲注、延时盲注ORDER BY $id 我们直接可以从界面中得知传参的参数为SORT&#x…

Yolo v9 “Silence”模块结构及作用!

论文链接&#xff1a;&#x1f47f; YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 代码链接&#xff1a;&#x1f47f; https://github.com/WongKinYiu/yolov9/tree/main Silence代码 class Silence(nn.Module):def __init__(self):supe…

vue2和vue3对比(语法层面)

阅读文章你将收获&#xff1a; 1 了解不使用组件化工具时&#xff0c;vue在html是如何使用的 2 知道vue2的生命周期函数有哪些 3 知道如何在组件化开发中使用vue 4 大致了解了vue2和vue3在使用上什么不同 最后&#xff1a;vue2和vue3除了下面我列出的有差异化的地方&…