首页 > 其他分享 >[LeetCode] 2024. Maximize the Confusion of an Exam

[LeetCode] 2024. Maximize the Confusion of an Exam

时间:2023-07-07 09:23:53浏览次数:45  
标签:end int Confusion make replace 2024 answerKey consecutive LeetCode

A teacher is writing a test with n true/false questions, with 'T' denoting true and 'F' denoting false. He wants to confuse the students by maximizing the number of consecutive questions with the same answer (multiple trues or multiple falses in a row).

You are given a string answerKey, where answerKey[i] is the original answer to the ith question. In addition, you are given an integer k, the maximum number of times you may perform the following operation:

  • Change the answer key for any question to 'T' or 'F' (i.e., set answerKey[i] to 'T' or 'F').

Return the maximum number of consecutive 'T's or 'F'in the answer key after performing the operation at most k times.

Example 1:

Input: answerKey = "TTFF", k = 2
Output: 4
Explanation: We can replace both the 'F's with 'T's to make answerKey = "TTTT".
There are four consecutive 'T's.

Example 2:

Input: answerKey = "TFFT", k = 1
Output: 3
Explanation: We can replace the first 'T' with an 'F' to make answerKey = "FFFT".
Alternatively, we can replace the second 'T' with an 'F' to make answerKey = "TFFF".
In both cases, there are three consecutive 'F's.

Example 3:

Input: answerKey = "TTFTTFTT", k = 1
Output: 5
Explanation: We can replace the first 'F' to make answerKey = "TTTTTFTT"
Alternatively, we can replace the second 'F' to make answerKey = "TTFTTTTT". 
In both cases, there are five consecutive 'T's. 

Constraints:

  • n == answerKey.length
  • 1 <= n <= 5 * 104
  • answerKey[i] is either 'T' or 'F'
  • 1 <= k <= n

考试的最大困扰度。

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

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

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximize-the-confusion-of-an-exam
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路是滑动窗口。题意是老师想把题目的答案出成一串 TRUE 或者一串 FALSE 让学生增加对自己的答案的不确定性,同时给了一个变量 K,允许你修改原答案里的 K 个答案以得到一串全局最长的 T或者 F。这道题转译一下就是在 input 字符串里面找一段最长的 T 或者最长的 F,其中允许你修改其中的 K 处字母,请你求全局最长的连续子串的长度。这道题我们需要用两次滑动窗口,一次看最长的由 T 组成的子串的长度,一次看最长的由 F 组成的子串的长度。

时间O(n)

空间O(1)

Java实现

 1 class Solution {
 2     public int maxConsecutiveAnswers(String answerKey, int k) {
 3         int numOfTrue = helper(answerKey, k, 'T');
 4         int numOfFalse = helper(answerKey, k, 'F');
 5         return Math.max(numOfTrue, numOfFalse);
 6     }
 7     
 8     private int helper(String s, int k, char target) {
 9         int start = 0;
10         int end = 0;
11         int count = 0;
12         int res = 0;
13         while (end < s.length()) {
14             if (s.charAt(end) != target) {
15                 k--;
16             }
17             end++;
18             while (k < 0) {
19                 if (s.charAt(start) != target) {
20                     k++;
21                 }
22                 start++;
23             }
24             res = Math.max(res, end - start);
25         }
26         return res;
27     }
28 }

 

LeetCode 题目总结

标签:end,int,Confusion,make,replace,2024,answerKey,consecutive,LeetCode
From: https://www.cnblogs.com/cnoodle/p/17533875.html

相关文章

  • [LeetCode] 2178. Maximum Split of Positive Even Integers
    Youaregivenaninteger finalSum.Splititintoasumofa maximum numberof unique positiveevenintegers.Forexample,given finalSum=12,thefollowingsplitsare valid (uniquepositiveevenintegerssummingupto finalSum): (12), (2+10), ......
  • leetcode-1629-easy
    SlowestKeyYouhaveabombtodefuse,andyourtimeisrunningout!Yourinformerwillprovideyouwithacirculararraycodeoflengthofnandakeyk.Todecryptthecode,youmustreplaceeverynumber.Allthenumbersarereplacedsimultaneously.I......
  • leetcode-1652-easy
    DefusetheBombYouhaveabombtodefuse,andyourtimeisrunningout!Yourinformerwillprovideyouwithacirculararraycodeoflengthofnandakeyk.Todecryptthecode,youmustreplaceeverynumber.Allthenumbersarereplacedsimultaneously......
  • LeetCode 160. 相交链表
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx):val(x),next(NULL){}*};*/classSolution{public:ListNode*getIntersectionNode(ListNode*headA,ListNode*headB){......
  • 【笔试实战】LeetCode题单刷题-编程基础 0 到 1【三】
    682. 棒球比赛题目链接682. 棒球比赛题目描述你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作......
  • Leetcode155. 最小栈
    classMinStack{public:stack<int>st;multiset<int>s;MinStack(){}voidpush(intval){st.push(val);s.insert(val);}voidpop(){intval=st.top();st.pop();......
  • 图-邻接表-leetcode207
    你这个学期必须选修​​numCourses​​​门课程,记为​​0​​​到​​numCourses-1​​。在选修某些课程之前需要一些先修课程。先修课程按数组​​prerequisites​​给出,其中​​prerequisites[i]=[ai,bi]​​,表示如果要学习课程​​ai​​则必须先学习课程......
  • 图-邻接表-leetcode207
    你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses-1 。在选修某些课程之前需要一些先修课程。先修课程按数组 prerequisites 给出,其中 prerequisites[i]=[ai,bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。例如,先修课程对 [0,1] 表示:想要......
  • LeetCode 周赛 352(2023/07/02)一场关于子数组的专题周赛
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]和[BaguTreePro]知识星球提问。往期回顾:LeetCode单周赛第350场·滑动窗口与离散化模板题单周赛352概览T1. 最长奇偶子数组(Easy)标签:滑动窗口、枚举T2. 和等于目标值的质数对(Medium)标签:质......
  • LeetCode 108. 将有序数组转换为二叉搜索树
    题目链接:LeetCode108.将有序数组转换为二叉搜索树题意:给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过1」的二叉树。解题思路:(递归)O(n)递归建立整......