【leetcode详解】考试的最大困扰度(滑动窗口典例)

news/2024/9/17 7:08:57/ 标签: 算法, leetcode, 职场和发展

 实战总结:

  • sum += answerKey[right] == c; 经典操作,将判断语句转化为0, 1接收来计数
  • //大问题分解: 对'T'还是'F'做修改, 传参为c
  • //滑动窗口: 遍历, 维护left& right指向 及 c的个数, 更新
  • 不知从何下手写代码时:考虑先写好第一次的,然后以此为基础补充代码以适后续情况

题面:

解题感受: 思路总体好想, 实现略有挑战。

思路分析:

  • //rt不断向右遍历
  • //sum由rt,lf分别更新,记录二者所夹区间内的情况
  •         //遍历情况用0,1记录在sum中,作为更新lf的参考
  • //每一次循环都更新一次mx,保证不重不漏//这一步减少了太多分类讨论操作,详见文末代码

代码实现:

class Solution{
public:int maxConsecutiveAnswers(string answerKey, int k){//大问题分解: 对'T'还是'F'做修改, 传参为c//滑动窗口: 遍历, 维护left& right指向 及 c的个数, 更新int len = answerKey.length(); auto getcnt = [&](char c) -> int{int mx = 0;//rt不断向右遍历//sum由rt,lf分别更新,记录二者所夹区间内的情况//遍历情况用0,1记录在sum中,作为更新lf的参考//每一次循环都更新一次mx,保证不重不漏for(int lf=0, rt=0, sum=0; rt<len; rt++ ){//先写好第一次的sum += answerKey[rt] == c;//再补上后面的更新操作while(sum > k)//一直找到第k+1个{			  //以sum为依据,更新lf的值sum -= answerKey[lf++] == c;}mx = max(mx, rt-lf+1);//每一次循环都做一次更新,就避免了繁琐的分类讨论}return mx;			};return max(getcnt('F'), getcnt('T'));}
};

可以对比:由于最初没有想到每次循环时都要更新mx值,而修补出的含大量分类讨论的代码:(甚至最后依然不能AC)

class Solution {
public:int maxConsecutiveAnswers(string answerKey, int k) {auto getcnt = [&](char c) -> int{int pre = 0, mx = 0, cnt = 1, len = answerKey.length();int i=0;while(answerKey[i] != c && i < len) i++;if(answerKey[0] != c) pre = 0;else pre = i;//?// cout<<"t1 ";			if(i == len) return len;int j=i+1;//记忆化?while(cnt <= k && j < len){if(answerKey[j] == c) cnt++;j++;}if(j == len) return len;mx = max(mx, j-pre+1-1);while(j < len){mx = max(mx, j-pre+1);i++, j++;pre = i;while(answerKey[i] != c && i < len) i++;
//				cout<<"t4 ";while(j < len && answerKey[j] != c) j++;
//				cout<<"t5 ";}return mx;};return max(getcnt('T'), getcnt('F'));    }
};

~希望对你有启发!~


http://www.ppmy.cn/news/1522161.html

相关文章

猜测、实现 B 站在看人数

猜测、实现 B 站在看人数 猜测找到接口参数总结 实现 猜测 找到接口 浏览器打开一个 B 站视频&#xff0c;比如 《黑神话&#xff1a;悟空》最终预告 | 8月20日&#xff0c;重走西游_黑神话悟空 (bilibili.com) &#xff0c;打开 F12 开发者工具&#xff0c;经过观察&#xf…

华为 HCIP-Datacom H12-821 题库 (7)

有需要题库的可以看主页置顶 V群仅进行学习交流 1.配置 VRRP 跟踪物理接口状态的命令是在华为设备上&#xff0c;以下哪一项是配置 VRRP 跟踪物理接口状态的命令&#xff1f; A、track vrrp vrid 1 interface GigabitEthernet0/0/0 B、vrrp vrid 1 track interface GigabitE…

基于Openjdk容器打包运行jar程序

文章目录 应用场景基于Openjdk容器打包运行jar程序1.编译项目成jar包2.构建Dockerfile文件精简版-含jar包精简版-不含jar包带注释版-含jar包 3.编译Dockerfile成镜像。4.运行镜像&#xff1a; 应用场景 部署多版本jdk的应用程序。 基于Openjdk容器打包运行jar程序 1.编译项目…

python图像处理基础(skimage、PIL、OpenCV)

python图像处理基础&#xff08;skimage、PIL、OpenCV&#xff09; 1、skimage图像处理基础 from skimage import io import numpy as np image io.imread("数字图像处理.png") io.imshow(image) io.show() # 显示图像 # 获取图像基本信息 print("图像类型:…

今天又学到了——图编号关联章节号,QGIS下载文件存储的瓦片

记录教程来源&#xff1a;​​​​​​【Word图编号关联章节号】图片分章节 编号&#xff0c;图1-1、图2-1_哔哩哔哩_bilibili 上面链接这个实现的是这个效果&#xff1a; word自动目录及章节自动编号教程_哔哩哔哩_bilibili&#xff0c;这个的效果是自己设计多级列表&#xf…

(十五)SpringCloudAlibaba-Sentinel持久化到Nacos

前言 在前面我们已经将Sentinel配置的规则持久化到系统的文件中。本章节我们将Sentinel持久化到Nacos中; 传送门(Sentinel数据持久化到文件)https://blog.csdn.net/weixin_45876411/article/details/140742963 默认情况下 Sentinel 只能接收到 Nacos 推送的消息&#xff0c;但…

【2024数模国赛赛题思路公开】国赛C题第二套思路丨附可运行代码丨无偿自提

2024年国赛C题第二套解题思路 第一问&#xff1a;2024~2030年农作物的最优种植方案 【问题分析】 题目要求为某乡村在2024~2030年制定农作物的最优种植方案&#xff0c;目的是最大化收益&#xff0c;并需考虑两种销售情况&#xff1a; 1. 超过预期销售量的部分滞销&#xff0…

vue如何实现路由缓存

&#xff08;以下示例皆是以vue3vitets项目为例&#xff09; 场景一&#xff1a;所有路由都可以进行缓存 在渲染路由视图对应的页面进行缓存设置&#xff0c;代码如下&#xff1a; <template><router-view v-slot"{ Component, route }"><transiti…

OT安全零死角!Fortinet OT安全平台再升级

近日&#xff0c;专注推动网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;&#xff0c;宣布对旗下业界领先的OT安全平台进行新一轮全面升级&#xff0c;此次更新旨在深化安全组网与安全运营&#xff08;SecOps&#xff09;服务的功…

图论篇--代码随想录算法训练营第五十三天打卡| 110. 字符串接龙,105.有向图的完全可达性,106. 岛屿的周长

110. 字符串接龙 题目链接&#xff1a;110. 字符串接龙 题目描述&#xff1a; 字典 strList 中从字符串 beginStr 和 endStr 的转换序列是一个按下述规格形成的序列&#xff1a; 序列中第一个字符串是 beginStr。序列中最后一个字符串是 endStr。 每次转换只能改变一个字符…

实战项目-快速实战-springboot dataway

最后附项目源码, 开箱即用 访问地址 http://127.0.0.1:8101/interface-ui/#/ 效果图 具体怎么用, 大家还是看官网,中文文档 https://www.dataql.net/docs/dataway/ui/ui-list 项目结构 代码 DataWayApplication package com.zero.dataway;import net.hasor.spring.boot…

JS面试真题 part1

JS面试真题 part1 1、说说JavaScript中的数据类型&#xff0c;储存上的差别2、说说你了解的js数据结构3、DOM常见的操作有哪些4、说说你对BOM的理解&#xff0c;常见的BOM对象你了解哪些5、 和 区别&#xff0c;分别在什么情况使用 1、说说JavaScript中的数据类型&#xff0c;…

ceph-iscsi 手动安装过程中的一些问题记录以及解决办法

ceph-iscsi 手动安装教程 安装教程&#xff0c;建议直接看官方文档&#xff0c;猛戳传送门。官方教程是英文版的&#xff08;不知道有没有中文版&#xff09;&#xff0c;都是一些基础英语&#xff0c;问题不大&#xff0c;实在不行找个翻译软件帮帮忙&#xff0c;哈哈哈。 多…

换工作环境后, 开发环境速更步骤

防火墙问题已经解决, windows和linux已经可以链接了 右键PowerShell 关闭所有防火墙: netsh advfirewall set allprofiles state off开启所有防火墙: netsh advfirewall set allprofiles state on两种方案, 网卡, 按照文档, 全一致, 配置, 使用网线 网线,两个 路由器, 直接拉…

【Linux】Linux常用命令80条(含完整命令语句)

【Linux】Linux常用命令80条&#xff08;含完整命令语句&#xff09; 整理一些Linux指令方便大家查阅使用。以下是一些常用的 Linux 命令&#xff1a; 1. 文件和目录操作 ls&#xff1a;列出当前目录中的文件和子目录 lspwd&#xff1a;显示当前工作目录的路径 pwdcd&#xff…

[yolov5] --- yolov5入门实战「土堆视频」

1 项目介绍及环境配置 下载yolov5 tags 5.0源码&#xff0c;https://github.com/ultralytics/yolov5/tree/v5.0&#xff0c;解压 Pycharm 中创建conda虚拟环境 激活conda虚拟环境 根据作者提供的requirements.txt文件&#xff0c;pip install -r requirements.txt 如果作者没有…

pycharm如何安装插件,以及pycharm里面的Python Interpreter(Python解释器)的用途

一、Pycharm如何安转插件 在pycharm下面的plugins可以安装插件&#xff0c;比如图所示&#xff0c;可以安装一个Translation的插件&#xff0c;可以进行翻译。 提示&#xff1a;如果你现在已经打开某个项目了&#xff0c;想要回到图一所展示的界面改怎么做 操作如图2:File>…

如何打造高校实验室教学管理系统?Java SpringBoot助力,MySQL存储优化,2025届必备设计指南

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

WebGIS面试题(第九期)

坐标系&#xff1a; 文章目录 **坐标系&#xff1a;**1、如何使用ArcGIS进行GIS坐标系转换&#xff1f;2、Cesium中的Cartesian3坐标系的原点在哪里&#xff1f;它的轴是如何定义的&#xff1f;3、如何在Cesium中使用矩阵进行坐标系转换。4、在Cesium中&#xff0c;如何将屏幕坐…

轻松升级:Ollama + OpenWebUI 安装与配置【AIStarter】

Ollama是一个开源项目&#xff0c;用于构建和训练大规模语言模型&#xff0c;而OpenWebUI则提供了一个方便的前端界面来管理和监控这些模型。本文将指导你如何更新这两个工具&#xff0c;并顺利完成配置。 准备工作 确保你的系统已安装Git和Python环境。安装必要的依赖库&…