#3816. 练7-连续能量之翻转术

练7-连续能量之翻转术

🏫 兔猫信奥学院:连续能量之翻转术

在兔猫信奥学院的魔法课堂上,加菲老师为小兔和小猫布置了一项新的挑战。
他展示了一副神奇的二进制阵法,并说道:“同学们,这副阵法中,数字 1 表示强大的魔法能量,而 0 则代表微弱的符文。
如果你们能将最多翻转 kk 个 0 为 1,从而使得阵法中连续出现的 1 的数量达到最大,你们就有望获得传说中的《能量秘典》!”

小兔和小猫摩拳擦掌,开始研究如何巧妙地翻转这些符文以获得最大的能量连击。请你帮助他们写出程序,实现这一神奇的翻转术,并返回操作后连续 1 的最大个数。


💡【题目描述】

给定一个二进制数组 nums 和一个整数 kk。如果最多可以翻转 kk 个 0 为 1,请返回在执行操作后数组中连续 1 的最大个数。

进阶问题:如果输入的数字以“无限流”方式逐个输入,内存无法存储所有数字,你能设计出高效的解决方法吗?(本题仅要求实现离线版本)


📥【输入格式】

  • 第一行包含一个整数 nn,表示数组 nums 的长度。
  • 第二行包含 nn 个二进制数字(0 或 1),数字之间以空格分隔。
  • 第三行包含一个整数 kk

📤【输出格式】

  • 输出一个整数,表示在至多翻转 kk 个 0 的情况下,数组中连续 1 的最大个数。

📌【数据范围】

  • 1n1051 \leq n \leq 10^5
  • nums[i]{0,1}nums[i] \in \{0,1\}
  • 0kn0 \leq k \leq n

💡【输入输出样例】

样例输入 1

5
1 0 1 1 0
2

样例输出 1

4

解释:翻转数组中第 2 个位置的 0 可以得到连续 1 的序列 [1,1,1,1],长度为 4。


样例输入 2

6
1 0 1 1 0 1
1

样例输出 2

4