算法2:滑动窗口(上)

文章目录

  • 长度最小子数组
  • 无重复字符的最长子串
  • [最大连续 1 的个数III](https://leetcode.cn/problems/max-consecutive-ones-iii/description/)
  • 将x减到0的最小操作数

长度最小子数组

在这里插入图片描述

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int len = INT_MAX;int right = 0, left = 0;int sum = 0;while(left <= right && right < nums.size()){sum += nums[right++];//进窗口while(sum >= target) //判断{len = min(len, right - left);sum -= nums[left++]; // 出窗口}}return len == INT_MAX ? 0 : len;}
};

无重复字符的最长子串

在这里插入图片描述

class Solution {
public:int lengthOfLongestSubstring(string s) {int n = s.size();int left = 0, right = 0;int hash[127] = {0};int res = 0;while (right < n) {hash[s[right]]++; // 进窗口,右端滑动if (hash[s[right]] > 1) {while (hash[s[left]] != hash[s[right]])hash[s[left++]]--;hash[s[left++]]--;} else {res = max(res, right - left + 1);}right++;}return res;}
};

int max(int a, int b)
{return a > b ? a : b;
}
int lengthOfLongestSubstring(char * s){int n = strlen(s);int left = 0, right = 0, res = 0;int hash[127] = {0};while(right < n){hash[s[right]]++;while(hash[s[right]] > 1)hash[s[left++]]--;res = max(res,right - left + 1);right++;}return res;
} 

解析:
在这里插入图片描述


最大连续 1 的个数III

在这里插入图片描述

在这里插入图片描述

class Solution {
public:int longestOnes(vector<int>& nums, int k) {int res = 0,zero = 0;for(int left = 0,right = 0; right < nums.size();right++){if(nums[right] == 0)    zero++;//进窗口while(zero > k){if(nums[left++] == 0) zero--;}    res = max(res,right - left + 1);}return res;}
};
class Solution {
public:int longestOnes(vector<int>& nums, int k) {int left = 0, right = 0;int zero = 0, res = 0;while (right < nums.size()) {// 进窗口while (right < nums.size() && nums[right])right++;// 判断if (right < nums.size() && ++zero <= k) {right++;// 数据更新res = max(res, right - left);} else {// 数据更新res = max(res, right - left);// 出窗口while (left < right && nums[left])left++;k--;left++;right++;}}return res;}
};

将x减到0的最小操作数

在这里插入图片描述

正难则反

该题从正面去解,一会儿左一会儿右全凭场景所变化,编码写起来非常繁琐;此时,运用数学思维反证法来解决会不会简单些呢?该题需要求最小操作数,那也就意味着剩下的数据量是最大的,而且因为每次操作都在最左或者最右边,那也就是说剩下的数据是原数据的连续子串;OK,现在我们只需要求出一个符合的尽可能保证数据量大其sum值等于sum(nums) - x连续子串即可.

那现在将符合要求数据看成一个窗口往后滑动即可。

class Solution {
public:int minOperations(vector<int>& nums, int x) {int sum = 0;for(int e : nums)   sum += e;if(x > sum) return -1;if(x == sum) return nums.size();int target = sum - x;int res = -1;for(int left = 0, right = 0, tmp = 0; right < nums.size(); right++){tmp += nums[right];//进窗口while(tmp >= target){if(tmp == target)   res = max(res, right - left +1);//判断+记录长度tmp -= nums[left++];// 出窗口}}if(res == -1)return res;return nums.size() - res;}
};
class Solution {
public:int minOperations(vector<int>& nums, int x) {int sum = 0;for (int e : nums)sum += e;if (x > sum)return -1;//细节int target = sum - x;int res = -1;for (int left = 0, right = 0, tmp = 0; right < nums.size(); right++) {tmp += nums[right]; // 进窗口while (tmp > target) // 判断tmp -= nums[left++]; // 出窗口if (tmp == target)res = max(res, right - left + 1); // 更新数据}if (res == -1)return res;return nums.size() - res;}
};

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

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

相关文章

聚观早报 | 拼多多第一季度营收;苹果2024款彩虹表带上市

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 5月24日消息 拼多多第一季度营收 苹果2024款彩虹表带上市 小米汽车智驾将提速 iPhone 16 Pro Max将用最大屏幕 …

【hive和spark】hive on spark和spark读取hive metastore配置

HIVE ON SPARK 和 SPARK READ HIVE METASTORE 具体hadoop 和 hive单机版本安装请参考单节点搭建hadoop和hive 此文是基与这篇基础上升级而来。 零、版本说明&#xff1a; 本例使用的版本&#xff0c;hive和spark版本对标Cloudera 公司的 cdh6.2.0 版本&#xff0c;hdfs图省事…

vscode 插件开发指南

1安装nodejs、vscode 2安装插件脚手架 npm install -g yo generator-code 3使用命令创建插件项目 yo code 4在vscode中打开项目 5运行调试&#xff0c;按F5键 6在新打开的窗口中按shiftctrlp 然后执行命令 7配置右键菜单命令 遇到问题&#xff1a; 1.package.json中vsc…

高性能负载均衡的分类及架构分析

如何选择与部署适合的高性能负载均衡方案&#xff1f; 当单服务器性能无法满足需求&#xff0c;高性能集群便成为提升系统处理能力的关键。其核心在于通过增加服务器数量&#xff0c;强化整体计算能力。而集群设计的挑战在于任务分配&#xff0c;因为无论在哪台服务器上执行&am…

STM32_HAL_RTC时钟

1. RTC 时钟简介 STM32F407 的实时时钟&#xff08;RTC&#xff09;是一个独立的定时器。 STM32 的 RTC 模块拥有一组连续计数的计数器&#xff0c;在相对应的软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统的当前时间和日期。 RTC 模块和时钟配…

2024年电工杯数学建模A题思路分享 - 园区微电网风光储协调优化配置

# 1 赛题 A 题&#xff1a; 园区微电网风光储协调优化配置 园区微电网由风光发电和主电网联合为负荷供电&#xff0c;为了尽量提高风光电量的 负荷占比&#xff0c;需配置较高比例的风光发电装机容量&#xff0c;但由于园区负荷与风光发电功 率时序不匹配&#xff0c; 可能导致…

SaToken+SpringBoot+Redis前后端分离登录认证

目录 前言一、创建工程项目&#x1f38d;1.1 创建后端工程1.2 创建前端工程 二、业务代码&#x1f38a;后端代码前端代码 三、测试参考资料 前言 Sa-Token 是一款 Java 语言的权限认证框架&#xff0c;提供了灵活、高效、易用的权限认证和会话管理功能。它是 SpringBoot、Spri…

移动端/PC端布局-flex布局

一:flex布局概述 作用 更加灵活、精确的布局块级盒子,避免了浮动布局中脱离标准流的现象;构成 只要启动了弹性布局:父元素变为:弹性容器、子元素为:弹性盒子、x轴水平方向为:主轴、y轴垂直方向为:侧轴(默认)二:如何使用flex布局 如何启动flex布局 给父级盒子(弹性…

mysql bin 日志转成sql

首先确定mysql binlog 服务开启 SHOW VARIABLES LIKE log_bin; 找到binlog日志 find / -name mysql-bin.* -type f 下载下来 本地找到mysql安装位置的bin目录 在窗口路径处直接输入cmd 执行 mysqlbinlog --no-defaults --base64-outputdecode-rows -v --start-datetime&…

华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇

本文作者&#xff1a;郑岩&#xff08;华为云AI变革首席专家&#xff09;全文约3313字&#xff0c;阅读约需8分钟&#xff0c;请仔细看看哦~ 前阵子&#xff0c;我在公司内部发了一篇Sora的科普贴&#xff0c;本来只是个简单的技术总结&#xff0c;但让我意外的是&#xff0c;…

vue.js对接海康威视摄像头web开发包

一、登录海康开放平台下载web开发包&#xff0c;下载需要先登录海康账号&#xff0c;没有的需先注册一个。 这里的appkey、ip、port、secret 和cameraIndexCodeasd是自己去申请的 appkey: "****", ip: "****", port: **, secret: "****", //必填…

torch配置时出现问题

torch配置时出现如下问题&#xff1a; 可能原因&#xff1a; 1、下载的whl文件中python版本与本机上的python版本不匹配&#xff1b; 2、上图中的文件是64位的&#xff0c;而本机python是32位的&#xff0c;也无法匹配&#xff1b; 3、cuda的版本不匹配。

关于在企业环境中中间人攻击(MITM)可行性研究的报告

这份文件是一篇关于在企业环境中中间人攻击&#xff08;MITM&#xff09;可行性研究的报告&#xff0c;由Nobel Ang和Koh Chuen Hia撰写。 以下是其核心内容的概述&#xff1a; 标题&#xff1a; 研究在企业环境中中间人攻击的可行性 作者&#xff1a; Nobel Ang&#xff08…

Spring Boot中集成WebSocket

目录 WebSocket简介WebSocket原理WebSocket的使用场景在Spring Boot中集成WebSocket 创建Spring Boot项目添加依赖配置WebSocket创建WebSocket处理器配置WebSocket端点前端使用WebSocket添加WebSocket拦截器 WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的…

AI在线免费音乐生成工具:suno、udio、stableaudio

文生音乐 1、suno https://app.suno.ai/ 2、udio https://www.udio.com/ 3、stableaudio https://stableaudio.com/live https://www.stableaudio.com/?utm_campaignstableaudio_promo&utm_mediumcta_button&utm_sourcestability_ai 4、其他MusicGen https://…

新书推荐:6.1 if语句

计算机语言和人类语言类似&#xff0c;人类语言是为了解决人与人之间交流的问题&#xff0c;而计算机语言是为了解决程序员与计算机之间交流的问题。程序员编写的程序就是计算机的控制指令&#xff0c;控制计算机的运行。借助于编译工具&#xff0c;可以将各种不同的编程语言的…

Springboo基础入门

一、SpringBoot概述 SpringBoot的诞生背景可以追溯到对传统Spring框架的改进需求&#xff0c;在过去&#xff0c;使用spring框架构建应用程序需要大量的配置和设置&#xff0c;这无形中层架了开发者的工作量并且&#xff0c;肯能造成一些配置上的错误&#xff0c;因此springboo…

20240523金融读报:跨境支付规模扩大银行服务科创企业举措

1、跨境支付市场规模不断增大&#xff0c;第三方跨境支付&#xff08;万里汇、连连支付&#xff09;迅速成长&#xff08;支付、融资、理财、账务管理、结算、汇率管理、保险、税务一站式服务&#xff09;&#xff08;这是不是倒逼银行改变支付方式的下个场景&#xff1f;就如目…

【k8s 从0安装一个local-path插件】

创建sc&#xff0c;cm &#xff0c;local-path插件 创建storageclass&#xff08;cluster资源&#xff09; apiVersion: storage.k8s.io/v1 kind: StorageClass metadata:annotations:defaultVolumeType: localname: base-local-path provisioner: rancher.io/local-path rec…

9.3 字符串本质与处理字符串

字符串本质 字符串是由若干字符组成的序列。 字符是以数字的形式存储在计算机内部的。 ASCII编码用7位二进制数表示了128(27)个字符&#xff0c;包括26个英文字母大小写&#xff0c;0-9的10个阿拉伯数字&#xff0c;一些标点符号、数学符号和控制字符。 Unicode编码用32位二…