【刷题日记】2024. 考试的最大困扰度

简介: 本次刷题日记的第 17 篇,力扣题为:67. 二进制求和 ,简单

【刷题日记】2024. 考试的最大困扰度

本次刷题日记的第 17 篇,力扣题为:67. 二进制求和简单

一、题目描述:

image.png

今天来刷一个中等的题,乍一看是一个考试的题,仔细看了之后发现是一个修改答案的题?


看题目的话就是将给出的字符串中,修改 k 个字符来保证连续的相同字符的数量是最大的,一起来分析一下

二、思路分析:

1、这道题考察了什么思想?你的思路是什么?

这道题给了我们那些重点信息呢,瞅瞅看:

  • 题目给出一个字符串,只有 T 和 F ,并给出可以修改的 k 个字符
  • 修改的 K 个字符,只能修改成 T 或者是 F
  • 看上去不就是一个修改字符的问题吗?那么我们需要如何去修改才能保证连续的相同字符个数达到最大呢

我们画一个图,在草稿上按照常规逻辑去框选我们期望的数据就可以得出我们想要的答案

以题目中给出的示例: answerKey = "TTFTTFTT", k = 1

image.png

看上图我们可以知道,我们用滑动的框框去框选符合我们要求的区间的时候

就可以逐个比对出哪些是符合要求的,哪些是不符合要求的,并且同样也可以计算出来连续相同的字符个数,进而计算出最大值

此处需要注意的是,题目给出的可以修改 k 个字符的条件,这个条件加入到逻辑中需要重点关注,那么剩下的,就是来翻译代码的过程了

三、编码

根据上述逻辑和分析,我们就可以翻译成如下代码,可以注意查看一下我们对于 k 的处理

编码如下:

func maxConsecutiveAnswers(answerKey string, k int) int {
    return max(helper(answerKey, k, 'T'),helper(answerKey, k, 'F'))
}
// 帮助函数,主要是计算按照要求填充 k 个指定字符的时候,该字符最长连续的个数
func helper(answerKey string, k int, ch byte) (ans int) {
    left, sum := 0, 0
    for right := range answerKey {
        if answerKey[right] != ch {
            sum++
        }
        // 如果识别到目前的区间,已经有大于 k 个非我们期望的字符,那么就要开始移动
        for sum > k {
            if answerKey[left] != ch {
                sum--
            }
            left++
        }
        // 计算符合要求的区间连续指定字符的个数,和上一个区间结果比较,取最大值
        ans = max(ans, right-left+1)
    }
    return
}
func max(a, b int) int {
    if b > a {
        return b
    }
    return a
}

看了上述编码后就知道这个题还是非常简单的,但是思想也是相当重要的,无论做什么事情,基础要牢固 ,思路正确了,设计正确了,编码基本差不了啥了,谁来实现都一样

四、总结:

该题的时间复杂度,是 O(n) , 此处我们也是循环了 2 次 answerKey 的长度,所以是 O(n),空间复杂度是 O(1) , 引入的只是尝试级别的内存消耗

原题地址:2024. 考试的最大困扰度

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章
|
4天前
|
算法 前端开发
考试的最大困扰度
考试的最大困扰度
26 0
|
Java C++ Python
快讯:LeetCode中国正式上线《剑指Offer》题目,刷题真方便了!
近日,LeetCode中国[1]上线了一个全新的分类模块 LCOF “剑指 Offer[2]”。
4020 0
快讯:LeetCode中国正式上线《剑指Offer》题目,刷题真方便了!
|
4天前
蓝桥杯省赛冲刺(1 补充)考试流程 做题技巧 手算题 杂题
蓝桥杯省赛冲刺(1 补充)考试流程 做题技巧 手算题 杂题
8 0
LeetCode-2024 考试的最大困扰度
LeetCode-2024 考试的最大困扰度
|
4天前
leetcode-2024:考试的最大困扰度
leetcode-2024:考试的最大困扰度
18 0
|
10月前
|
架构师
快乐学习顺利通关——架构师考试通关总结
通过这篇博文我将给大家介绍如何快乐的学习,如何顺利的通关,如何在过程中体会感受学习的方式方法。
|
10月前
|
Cloud Native
【刷题日记】1037. 有效的回旋镖
本次刷题日记的第 58 篇,力扣题为:1037. 有效的回旋镖,简单
【刷题日记】1037. 有效的回旋镖
|
算法 测试技术
刷爆 LeetCode 双周赛 100,单方面宣布第一题最难
上周末是 LeetCode 第 100 场双周赛,你参加了吗?这场周赛整体没有 Hard 题,但是也没有 Easy 题。第一题国服前百名里超过一半人 wa,很少见。
97 0
|
存储 SQL 负载均衡
图数据库认证考试 NGCP 错题解析 vol.02:这 10 道题竟无一人全部答对
大概知道在错题解析未出来之前,NebulaGraph 专业技能认证 NGCP 通过率仅有 16.7%。但经过上一轮解析, 通过率上升 0.1%,现在变成了 16.8%。我们再接再厉,看下这期之后又如何……
162 0
|
小程序 测试技术 数据安全/隐私保护
初级软件测试面试题怎么刷?一个免费的题库为你总结好所有
软件测试行业是我国新兴起的一个技术岗,由于薪资高、门槛低,发展前景好……等原因,从而成为近几年最热门的就业岗位。