2024. 考试的最大困扰度

简介: 【9月更文挑战第1天】

一位老师正在出一场由 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

解题思路:
首先我们对题意进行分析,目标要最长连续的'T'或者'F'.可以改动最多k个。因为就两种情况:一种最长连续的是‘T’,另一种最长连续的是‘F’,所以我们假设最长连续的是’T‘去分析,那个就应该改’F‘。所以我们从头往后维护一个区间,这个区间中最多改了k个'F',如果不到k个,那么我们就将区间右边扩大添加进去一个字符,如果还是'T',那么肯定再添加,如果不是’T‘是’F‘,再看修改的次数超过k没有,没超过就继续,超过了就将区间左边缩小,直到区间内改动次数不超过k为止,这就是滑动窗口
上面是我们对最长连续的是’T‘去分析的,所以我们在将最长连续的是’F‘,去分析一边,求最大值即可。

class Solution {
public:
    int maxConsecutiveAnswers(string answerKey, int k) {
        int len = answerKey.length();
        // T
        int ans = 0;
        for (int l = 0, r = 0 , sum = 0;r < len; r++){
            sum+=answerKey[r]!='T';
            while(sum>k){// out
                sum-=answerKey[l++]!='T';//左指针右移
            }
            ans = max (ans,r-l+1);
        }
        // F
        for (int l = 0, r = 0 , sum = 0;r < len; r++){
            sum+=answerKey[r]!='F';
            while(sum>k){// out
                sum-=answerKey[l++]!='F';//左指针右移
            }
            ans = max (ans,r-l+1);
        }
        return ans;
    }
};
目录
相关文章
|
数据中心 网络架构
|
机器学习/深度学习 人工智能 Java
验证码破解全流程实战
验证码破解全流程实战
1433 0
验证码破解全流程实战
|
前端开发 JavaScript 安全
小红书前端架构
小红书前端架构
|
消息中间件 负载均衡 Java
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息消费长轮训机制体系的原理分析
【深入浅出RocketMQ原理及实战】「底层原理挖掘系列」透彻剖析贯穿RocketMQ的消息消费长轮训机制体系的原理分析
564 0
|
存储 安全 算法
从哈希到挑战响应,密码传输安全解析
本文解析从明文、哈希到挑战-响应等多种传输机制,揭示其优势与隐患,助你掌握安全本质,选对防护方案,让密码“传得安全,用得放心”。
548 0
|
监控 Cloud Native 数据可视化
科学管理产品发布全流程:从规划到落地的实践指南
本文探讨云原生时代企业发布管理的新范式,分析多云协同、版本控制、风险预警等核心挑战,结合阿里云工具链提供方法论与实践方案,助力企业构建高效、安全、可观测的发布体系。
397 0
|
存储 文字识别 文件存储
飞桨x昇腾生态适配方案:03_模型训练迁移
本案例以PaddleOCRv4模型为例,详细介绍了将模型迁移到NPU的完整流程。迁移过程中需确保模型功能在新硬件上无误,重点关注偶发性错误及长时间运行时可能出现的问题,并通过日志辅助定位问题。文档涵盖环境搭建、数据集准备、模型配置、训练启动及常见问题排查等内容。例如,通过设置环境变量排查缺失算子,处理Paddle版本兼容性问题,以及解决进程残留等。适合希望将OCR模型部署到NPU的开发者参考。
701 0
|
传感器 监控 数据可视化
手把手教你用IoT设备监控家庭环境数据
本实验带您体验如何通过六合一传感器(温度、湿度、二氧化碳、PM2.5、PM10、甲醛)实现家庭环境数据实时采集,并搭建可视化大屏实时监控。
|
机器学习/深度学习 人工智能 算法
详解AI作画算法原理
AI作画算法运用深度学习和生成对抗网络(GAN),通过学习大量艺术作品,模拟艺术家风格。卷积神经网络(CNN)提取图像特征,GAN中的生成器和判别器通过对抗训练生成艺术图像。循环神经网络和注意力机制可提升作品质量。这种技术开创了艺术创作新途径。
|
SQL 数据可视化 大数据
JimuReport 积木报表 v1.7.52 版本发布,免费的低代码报表
一款免费的数据可视化报表工具,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等!
633 0