【Leetcode:2024. 考试的最大困扰度 + 滑动窗口】

【C++二分查找 滑动窗口】2024. 考试的最大困扰度|1643 一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 'T' 表示)或者 false (用 'F' 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。 给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最多次数: 每次操作中,将问题的正确答案改为 'T' 或者 'F' (也就是将 answ 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🚩 题目链接

⛲ 题目描述

一位老师正在出一场由 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 * 104
answerKey[i] 要么是 ‘T’ ,要么是 ‘F’
1 <= k <= n

🌟 求解思路&实现代码&运行结果


⚡ 滑动窗口

🥦 求解思路
  1. 该题通过滑动窗口来求解,具体求解算法如下:
  2. 遍历字符串,枚举子串右端点 right,同时维护最小左端点 left ,通过词频表中维护子串中字符的个数。
  3. 如果 T 和 F 的出现次数都超过 k,那么必须不断移动左端点 left,同时减少 词频表中字符串的出现次数,直到 T 和 F 的出现次数至少有一个 ≤k。
  4. 循环结束后,说明子串右端点在 right 时,对应的最小左端点为 left,用子串长度 right−left+1 更新答案的最大值。
  5. 有了基本的思路,接下来我们就来通过代码来实现一下的解法。
🥦 实现代码
class Solution {
    public int maxConsecutiveAnswers(String answerKey, int k) {
        char[] s = answerKey.toCharArray();
        int ans = 0;
        int left = 0;
        int[] cnt = new int[2];
        for (int right = 0; right < s.length; right++) {
            int rightIndex = s[right] == 'T' ? 0 : 1;
            cnt[rightIndex]++;
            while (cnt[0] > k && cnt[1] > k) {
                int leftIndex = s[left++] == 'T' ? 0 : 1;
                cnt[leftIndex]--;
            }
            ans = Math.max(ans, right - left + 1);
        }
        return ans;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

英飞凌TC3xx DSADC旋变软解码实战:从示波器波形到VX1000数据,手把手教你避坑 本文详细介绍了英飞凌TC3xx系列微控制器的DSADC模块在电机旋变软解码中的实战应用。从示波器波形分析到VX1000数据采集,提供了一套完整的调试方法论,帮助工程师快速定位和解决常见问题,提升解码精度和系统性能。 阅读详情

相关推荐

Cisco Firepower FMCv修改管理Ip方法

Cisco Firepower FMCv修改管理Ip方法

funnycoffee123的博客 1091

LeetCode 2024.考试的最大困扰度

LeetCode 2024.考试的最大困扰度 2024. 考试的最大困扰度 方法一 : dp; 对字符串进行循环遍历: **当idx <= k 时 : ** ans=i+1 ans = i+1 ans=i+1 当idx > k 时 不难得出 当前字符串的长度为i-f[idx-k-1] ans=max(ans,i−f[idx−k−1]) ans = max(ans,i-f[idx-k-1]) ans=max(ans,i−f[idx−k−1]) class Solution { p

qq_57115378的博客 324

无人机机场自动化巡检钢铁厂管廊技术方案

摘要:针对钢厂管廊人工巡检效率低、成本高等问题,提出5G+无人机自主巡检解决方案。该系统由智能机库、5G无人机、AI分析平台等组成,可实现自动起降、实时数据传输、缺陷智能识别等功能。无人机配备四合一云台相机,支持42分钟续航和复杂环境飞行,通过深度学习算法自动生成巡检报告。方案实施后可提升巡检效率3倍以上,降低人工成本和安全风险,实现全天候自动化巡检,为钢厂管廊安全管理提供智能化技术支持。(149字)

gxdhlg的专栏 1683

【java】leetcode1004. 最大连续1的个数 III;2024. 考试的最大困扰度

1004. 最大连续1的个数 III 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 一位老师正在出一场由 n道判断题构成的考试,每道题的答案为 true (用 'T' 表示)或者 false (用 'F'表示)。老师想增加学生对自己做出答案的不确定性,方法是最大化有 连续相同结果的题数。(也就是连续出现 true 或者连续出现 false)

wrywry0813的博客 1025

别再怕DRIVER_VERIFIER_DMA_VIOLATION蓝屏:手把手教你用WinDbg分析IOMMU与驱动冲突

本文深入解析DRIVER_VERIFIER_DMA_VIOLATION蓝屏错误,从IOMMU原理到实战排错,手把手教你使用WinDbg分析驱动冲突。通过理解DMA与IOMMU的核心机制、搭建分析环境、解读DMAR表与设备拓扑,最终定位问题驱动并提供解决方案,帮助开发者和IT运维人员有效应对此类系统崩溃问题。

weixin_30298497的博客 802

利用图层自动识别算法实现CAD到Revit BIM模型的高效转换 - VS2022与AutoCAD2024开发环境配置指南

本文详细介绍了如何配置VS2022与AutoCAD2024开发环境,并利用图层自动识别算法实现CAD图纸到Revit BIM模型的高效自动化转换。通过解析CAD图层的规律性,该算法能智能识别并分类墙、门、窗等构件,提取几何信息并驱动Revit自动创建三维模型,从而将传统繁琐的人工“翻模”工作转化为高效、准确的自动化流程,大幅提升BIM模型创建效率。

Apple的专栏 1124

LeetCode 2024. 考试的最大困扰度

本题考察滑动窗口技巧,要求通过最多k次翻转获得最长连续相同字符子串。提供两种解法:1)分别计算以'T'和'F'为目标的最长子串;2)同时跟踪两种字符数量,确保至少一种翻转不超过k次。两种方法均为O(n)时间复杂度,O(1)空间复杂度,适用于类似"最多修改k次"的子串问题。解法一分目标处理逻辑清晰,解法二单次遍历代码更简洁,均体现了滑动窗口维护约束条件的核心思想。

大家好,我是千楼,全栈开发工程师,分享日常学习和工作,记录成长~~~ 1174

YOLOv8源码解析与复现:ShuffleAttention:高效的混合注意力机制 实现通道和空间混合注意力

随着深度学习在计算机视觉领域的飞速发展,卷积神经网络(CNNs)已经成为图像分类、目标检测、语义分割等任务的核心。为了进一步提升模型的性能,研究者们引入了“注意力机制”,旨在让网络能够动态地关注输入数据中最具信息量的部分。经典的注意力模块,如SE-Net(Squeeze-and-Excitation Networks)和CBAM(Convolutional Block Attention Module),通过通道注意力或结合通道与空间注意力,显著增强了模型的特征表达能力。

FJN110的博客 554

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

📖本篇内容:Leetcode每日一题 2024. 考试的最大困扰度 双指针思想到滑动窗口思想转变应用题 📑 文章专栏:leetcode每日一题《打卡日常》 📆 最近更新:2022 年 3 月 28日 Leetcode每日一题 693. 交替位二进制数 简单遍历/位运算 ⭐算法仓库:小付的算法之路——Alascanfu-algorithm.git.io 🙊个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,.

Alascanfu的博客 2036

96.在 Vue 3 中使用 OpenLayers 探究加载 Point、Polygon 的极限

在前端 GIS(地理信息系统)开发中,OpenLayers 作为一个功能强大的 Web 地图库,广泛用于加载地图、渲染矢量数据(点、线、面)、叠加图层等场景。然而,当涉及到。

小彭的博客 1154

9.27华为OD机试真题 新系统 - 均衡调度 (Java/Py/C/C++/Js/Go)

9.26华为OD机试真题 新系统 - 均衡调度 (Java/Py/C/C++/Js/Go)

算法大师! 486

leetcode力扣 2024. 考试的最大困扰度

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

小程xy的博客 614

微信小程序中使用画布canvas实现动态心电图绘制

近期,接了个项目,三端(小程序、PC、公众号)同步开发,PC端没的问题,以前一直做的就是PC端,但是小程序和公众号之前没有做过,只能通过这个项目,边做边学了。人家都说小程序用原生的特别难,大部分都用uniapp开发,说是这个方便快捷,还能写app呢,因为我们的项目,需要用到蓝牙采集数据、画布画仪表盘以及心电图等,所以我们不太敢用uniapp开发,硬着头皮开始用原生开发。开发的过程中,也遇到过很多问题,但是好在经过我们团队的不懈努力,问题基本都解决了。下面我就来分享一下,在小程序中,如何通过canvas。

穆雄雄的博客 3651

leetcode-2024:考试的最大困扰度

leetcode-2024:考试的最大困扰度题目解题方法一:滑动窗口 题目 题目链接 一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。 给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最

菊头蝙蝠的博客 402

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

leetcode 2024. 考试的最大困扰度

leetcode 5873. 考试的最大困扰度 文章目录leetcode 5873. 考试的最大困扰度链接题目【medium】数据范围样例笑谈分析结论反思题解分析方法具体操作(虽然文字有点多,但通俗易懂,请耐心看下去)疑问代码 链接 leetcode 5873. 考试的最大困扰度. 题目【medium】 一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是最大化有连续相同结果的题数。

weixin_44820168的博客 792

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【每日一题】LeetCode 2024.考试的最大困扰度(字符串、二分查找、前缀和、滑动窗口)

本文介绍了一种解决特定字符串处理问题的算法——滑动窗口算法。问题背景是给定一个由判断题答案组成的字符串 answerKey 和一个整数 k,目标是通过最多 k 次操作(每次操作可以改变一个字符的值),最大化字符串中连续相同字符('T' 或 'F')的数量。 文章首先对问题进行了描述,并提出了使用滑动窗口算法来解决这个问题。接着,详细分析了算法的思路,包括初始化、遍历字符串、更新窗口和计算最大长度等步骤。最后,提供了详细的代码实现和注释,帮助读者更好地理解算法的具体操作和逻辑。

Hanbuhuic的博客 772

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【前缀和+二分、滑动窗口】LeetCode——2024.考试的最大困扰度

2024. 考试的最大困扰度 - 力扣(LeetCode) (leetcode-cn.com) 【考察点】前缀和+二分、滑动窗口 方法1:前缀和+二分 为什么会想到用二分做? 从题目的表述来看,在添加k次操作后,最长连续字符的结果一定位于区间[m,n][m, n][m,n](其中,mmm表示原先字符串中连续字符的最大长度,nnn表示字符串长度) 从结果的单调性质不难想到:针对具有单调性的区间,利用二分求出结果 通常一道题,都会正着做,通过一系列步骤求解出最终结果; 同时,也可以反着来,利用二分枚举每一个可

Apol1o_的博客 670

滑动窗口--2024. 考试的最大困扰度

或者我们可以将第二个 'F' 换成 'T' ,得到 answerKey = "TTF。或者,我们可以将第二个 'T' 换成 'F' ,得到 answerKey = "T。我们可以将最前面的 'T' 换成 'F' ,得到 answerKey = "我们可以将两个 'F' 都变为 'T' ,得到 answerKey = "我们可以将第一个 'F' 换成 'T' ,得到 answerKey = "两种情况下,都有三个连续的 'F'。两种情况下,都有五个连续的 'T'。总共有四个连续的 'T'。

m0_51587184的博客 492

leetcode2024. 考试的最大困扰度(java)

在maxLen 函数中,我们用left 和right 代表左右区间,sum 为左右区间【left,right】中字符c 的数量,数量不超过k 时,右指针,一直向右滑动,大于k时,左指针开始向右滑动,每次求出最大值,最终就是要的答案。每次操作中,将问题的正确答案改为 ‘T’ 或者 ‘F’ (也就是将 answerKey[i] 改为 ‘T’ 或者 ‘F’ )。或者,我们可以将第二个 ‘T’ 换成 ‘F’ ,得到 answerKey = “TFFF”。answerKey[i] 要么是 ‘T’ ,要么是 ‘F’

SP_1024的博客 372

力扣2024.考试的最大困扰度

【代码】力扣2024.考试的最大困扰度。

Pisasama的博客 314

Leetcode2024.考试的最大困扰度

Leetcode经典滑动窗口——考试的最大困扰度。 超容易理解的做法!

这里是Mae。 858

leetcode-2024. 考试的最大困扰度

leetcode-2024. 考试的最大困扰度题源知识点思路代码JavaJavaScriptpythonC 题源 2024. 考试的最大困扰度 知识点 滑动窗口 思路 滑动窗口,是用双指针而形成的,指针都是从最左边开始的,再次右指针一直右移动,而左指针对条件进行判断('T'或者'F'的数目的最小值与k比较),因为是判断,则左指针和右指针的差一定是越来越大,而不会缩小。 代码 Java 在写java的时候,习惯新把字符串当作数组来用。在java里面数组是数组,字符串是字符串。 Map集合中,需要

kjprime的博客 1810

滑动窗口,LeetCode 2024. 考试的最大困扰度

(也就是连续出现 true 或者连续出现 false)。那么我们维护一个变长滑窗,保证滑窗内 T 或 F的个数小于等于k。老师想增加学生对自己做出答案的不确定性,方法是。道判断题构成的考试,每道题的答案为 true (用。除此以外,还给你一个整数。时间复杂度: O(N)空间复杂度:O(N)只要窗口内的T或F的个数小于等于k即可。表示)或者 false (用。考虑一个窗口是否可以变为连续?一位老师正在出一场由。滑窗的最大长度就是答案。

EQUINOX1的博客 408

【LeetCode】考试的最大困扰度

题目描述 一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。 给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最多次数: 每次操作中,将问题的正确答案改为 ‘T’ 或者 ‘F’ (也就是将

weixin_44623662的博客 274

2024. 考试的最大困扰度

本题的核心是利用滑动窗口维护满足修改次数限制的最长连续子串。通过分别计算以'T'和'F'为目标的最长连续子串,取最大值即可。这种双向滑动窗口技巧,是处理「最多 k 次修改/翻转,求最大连续相同字符」类问题的经典方法。

Lucy_wzw的博客 1077
上一篇: 【Leetcode:7. 整数反转 + 数学】
下一篇: 【Leetcode:27. 移除元素 + 双指针】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值