Loading [MathJax]/jax/input/TeX/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【面试高频题】难度 1.5/5,常规滑动窗口运用题

【面试高频题】难度 1.5/5,常规滑动窗口运用题

作者头像
宫水三叶的刷题日记
发布于 2022-12-30 08:41:16
发布于 2022-12-30 08:41:16
25700
代码可运行
举报
运行总次数:0
代码可运行

题目描述

这是 LeetCode 上的「2024. 考试的最大困扰度」,难度为「中等」

Tag : 「滑动窗口」、「双指针」

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

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

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

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:answerKey = "TTFF", k = 2

输出:4

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

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:answerKey = "TFFT", k = 1

输出:3

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

示例 3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:answerKey = "TTFTTFTT", k = 1

输出:5

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

提示:

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    String s;
    int n, k;
    public int maxConsecutiveAnswers(String answerKey, int _k) {
        s = answerKey;
        n = s.length(); k = _k;
        return Math.max(getCnt('T'), getCnt('F'));
    }
    int getCnt(char c) {
        int ans = 0;
        for (int i = 0, j = 0, cnt = 0; i < n; i++) {
            if (s.charAt(i) == c) cnt++;
            while (cnt > k) {
                if (s.charAt(j) == c) cnt--;
                j++;
            }
            ans = Math.max(ans, i - j + 1);
        }
        return ans;
    }
}
  • 时间复杂度:
O(n)
  • 空间复杂度:
O(1)

最后

这是我们「刷穿 LeetCode」系列文章的第 No.2024 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。

在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。

为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:https://github.com/SharingSource/LogicStack-LeetCode 。

在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宫水三叶的刷题日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【面试高频题】难度 2.5/5,综合贪心的序列 DP 题
给定一个数对集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。
宫水三叶的刷题日记
2023/02/27
4400
既是「滑动窗口」入门题,更是高频面试题 ...
这是 LeetCode 上的「3. 无重复字符的最长子串」,难度为 「Medium」。
宫水三叶的刷题日记
2021/02/26
4910
【面试高频题】难度 3/5,状态压缩 DP 及其优化
使用一个二进制数表示当前哪些数已被选,哪些数未被选,目的是为了可以使用位运算进行加速。
宫水三叶的刷题日记
2022/12/30
5350
【面试高频题】难度 3/5,状态压缩 DP 及其优化
【面试高频题】难度 3/5,近期面试原题(简单计算几何运用)
为了避免除法精度问题,当我们枚举两个点 和 时,不直接计算其对应直线的 斜率和 截距,而是通过判断 和
宫水三叶的刷题日记
2022/10/30
4170
【面试高频题】难度 3/5,近期面试原题(简单计算几何运用)
【面试高频题】难度 1.5/5,常见字符串线性 DP 运用题
这是 LeetCode 上的「467. 环绕字符串中唯一的子字符串」,难度为「中等」。
宫水三叶的刷题日记
2022/11/01
3420
【面试高频题】难度 1.5/5,常见构造题(近期原题)
Tag : 「模拟」、「构造」现有一份 次投掷单个「六面」骰子的观测数据,骰子的每个面从 到 编号。观测数据中缺失了 份,你手上只拿到剩余 次投掷的数据。幸好你有之前计算过的这 次投掷数据的平均值。
宫水三叶的刷题日记
2022/10/30
4300
【面试高频题】难度 4/5,经典贪心运用及其证明
假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。
宫水三叶的刷题日记
2023/02/27
3540
【滑动窗口专题】一道经典的滑动窗口笔试高频题
这是 LeetCode 上的「438. 找到字符串中所有字母异位词」,难度为「中等」。
宫水三叶的刷题日记
2022/02/09
6560
【面试高频题】难度 1.5/5,常规栈运用题
这是 LeetCode 上的「1190. 反转每对括号间的子串」,难度为「中等」。
宫水三叶的刷题日记
2022/10/30
3380
【面试高频题】难度 1.5/5,简单常见的「哈希表」笔试/面试题
Tag : 「哈希表」、「模拟」给定平面上 对 互不相同 的点 ,其中 。回旋镖 是由点 表示的元组 ,其中 和 之间的距离和 和 之间的距离相等(需要考虑元组的顺序)。
宫水三叶的刷题日记
2022/04/06
3670
【面试高频题】难度 2/5,结合二分的序列 DP 运用题
这是 LeetCode 上的「1751. 最多可以参加的会议数目 II」,难度为「困难」。
宫水三叶的刷题日记
2022/05/25
2380
【面试高频题】难度 2/5,结合二分的序列 DP 运用题
【面试高频题】难度 1.5/5,超过一半难度在阅读理解上的 ... 高频面试题?!(含破题)
给你一个整数数组 citations,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。
宫水三叶的刷题日记
2023/11/22
1700
【面试高频题】难度 1.5/5,超过一半难度在阅读理解上的 ... 高频面试题?!(含破题)
【位运算专题】经典「状态压缩 + 位运算」入门题
给定一个字符串数组 words,找到两个单词长度乘积 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 。
宫水三叶的刷题日记
2022/04/07
3480
【综合笔试题】难度 3.5/5,常见序列 DP 题目及其优化思路
给你一个 不含重复 单词的字符串数组 words ,请你找出并返回 words 中的所有 连接词 。
宫水三叶的刷题日记
2022/12/30
3480
【综合笔试题】难度 3.5/5,常见序列 DP 题目及其优化思路
LeetCode热题100(滑动窗口篇)
这种子串子数组问题,而且还满足窗口的右边界右移动就是加,左边界右移就是减的问题大概率就是滑动窗口。
Yui_
2025/01/17
1120
LeetCode热题100(滑动窗口篇)
【面试高频题】难度 1/5,可用 Trie 进阶的模拟题
给出一个字符串数组 words 组成的一本英语词典。返回 words 中最长的一个单词,该单词是由 words 词典中其他单词逐步添加一个字母组成。
宫水三叶的刷题日记
2022/10/30
2480
又是一道高频「双指针」面试题 ...
这是 LeetCode 上的「485. 最大连续 1 的个数」,难度为 「Easy」。
宫水三叶的刷题日记
2021/02/20
4790
【面试高频题】难度 1.5/5,二分经典运用题
数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 开始)。
宫水三叶的刷题日记
2022/10/30
3560
【面试高频题】难度 1/5,热门枚举类模拟题
这是 LeetCode 上的「1737. 满足三条件之一需改变的最少字符数」,难度为「中等」。
宫水三叶的刷题日记
2022/06/21
4460
【滑动窗口专题】字符串滑动窗口运用题
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 次。
宫水三叶的刷题日记
2022/04/06
7530
推荐阅读
相关推荐
【面试高频题】难度 2.5/5,综合贪心的序列 DP 题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验