Leetcode每日一题 2024. 考试的最大困扰度 双指针思想到滑动窗口思想转变应用题

本文主要是介绍Leetcode每日一题 2024. 考试的最大困扰度 双指针思想到滑动窗口思想转变应用题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

📖本篇内容:Leetcode每日一题 2024. 考试的最大困扰度 双指针思想到滑动窗口思想转变应用题

📑 文章专栏:leetcode每日一题《打卡日常》

📆 最近更新:2022 年 3 月 28日 Leetcode每日一题 693. 交替位二进制数 简单遍历/位运算

⭐算法仓库:小付的算法之路——Alascanfu-algorithm.git.io

🙊个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(疯狂暗示QwQ)

🌇 点赞 👍 收藏 ⭐留言 📝 一键三连 关爱程序猿,从你我做起

文章目录

  • 🙊写在前面🙊
  • 题目
    • 提示
    • 📝思路📝
    • ⭐代码实现⭐
    • 运行结果
  • 🙊写在最后🙊

🙊写在前面🙊

最近再刷MySQL高级,所以侧重点不在于算法啦,坚持就好~

题目

一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。

给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最多次数:

每次操作中,将问题的正确答案改为 ‘T’ 或者 ‘F’ (也就是将 answerKey[i] 改为 ‘T’ 或者 ‘F’ )。
请你返回在不超过 k 次操作的情况下,最大 连续 ‘T’ 或者 ‘F’ 的数目。

示例1:

输入:answerKey = "TTFF", k = 2
输出:4
解释:我们可以将两个 'F' 都变为 'T' ,得到 answerKey = "TTTT" 。
总共有四个连续的 'T' 。

示例2:

输入:answerKey = "TFFT", k = 1
输出:3
解释:我们可以将最前面的 'T' 换成 'F' ,得到 answerKey = "FFFT" 。
或者,我们可以将第二个 'T' 换成 'F' ,得到 answerKey = "TFFF" 。
两种情况下,都有三个连续的 'F' 。

示例3:

输入:answerKey = "TTFTTFTT", k = 1
输出:5
解释:我们可以将第一个 'F' 换成 'T' ,得到 answerKey = "TTTTTFTT" 。
或者我们可以将第二个 'F' 换成 'T' ,得到 answerKey = "TTFTTTTT" 。
两种情况下,都有五个连续的 'T' 。

提示

  • n == answerKey.length
  • 1 <= n <= 5 ∗ 1 0 4 5 * 10^4 5104
  • a n s w e r K e y [ i ] answerKey[i] answerKey[i] 要么是 ‘T’ ,要么是 ‘F’
  • 1 <= k <= n

📝思路📝

本题考查知识点

  • 思路:如何分析,从哪里入手,是这道题的关键,小付一开始的思路是通过双指针来进行模拟在不超过K次操作的情况下,区间[i,j],最大连续T或者F的数量。i 所指向的的是符合字符串的起点,j是指向符合字符串的终点,我们需要求得 在区间[i,j] 需要修改的字符次数 <= k使得其满足题目要求的最长连续字符字符串。有了上述思路我们就进行简单模拟一下。
  • 初始位置i 为 0 ,j 位置为1 需要分别统计[i,j] 中的T 与 F 的数量便于,当我们需要进行修改时是否满足最少数量修改次数 <= k 这一条件来进行判断。我们分别计做 cntTcntF ,如果最少数量需要修改的字符数量>k 时,我们就需要进行区间缩小,以此来满足约束条件。

⭐代码实现⭐

滑窗应用

class Solution {public int maxConsecutiveAnswers(String answerKey, int k) {// 初始化双指针的位置int i = 0;int j = 1;// 用于记录当前区间[i,j]内T与F的数量int cntT = 0;int cntF = 0;int n = answerKey.length();char[] keys = answerKey.toCharArray();// 初始化 其实可以直接 将 j 位置也初始化为 0 这样这一步就省略了,但是为了更加清晰直白一点,就多了这一步。if (keys[0] == 'T'){cntT++;}else {cntF++;}while (j < n){// 统计区间中的T与F的数量if (keys[j] == 'T'){cntT++;}else {cntF++;}// 满足最少数量修改次数的字符修改int curNeedModifyKeysCnt = Math.min(cntF,cntT);// 如果此时的最少数量次数的字符修改都要大于k//则说明此时区间中出现了k+1个需要删除的字符//所以此时我们需要缩小区间,使得最少数量修改依旧满足k个if (curNeedModifyKeysCnt > k){if (keys[i] == 'T')cntT--;else if (keys[i] == 'F')cntF--;i++;}j++;}// 返回符合条件的最大区间中字符的个数return j  - i ;}
}
  • 时间复杂度: O( n n n)
  • 空间复杂度: O( 1 1 1)

运行结果

滑动窗口:

在这里插入图片描述

🙊写在最后🙊

2022-3 - 29今天小付打卡了哦~

美好的日出 美好的山河

都因有你存在 而璀璨 耀眼

在这里插入图片描述

这篇关于Leetcode每日一题 2024. 考试的最大困扰度 双指针思想到滑动窗口思想转变应用题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/fuijiawei/article/details/123813380
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/365921

相关文章

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt