#3815. 练6-连续魔法 1 的翻转术

练6-连续魔法 1 的翻转术

🏫 兔猫信奥学院:连续魔法 1 的翻转术

在兔猫信奥学院的魔法课堂上,加菲老师提出了一个有趣的挑战。
他拿出一副神奇的二进制阵法,说:“同学们,这副阵法中,每个数字都代表着一种魔法符号,1 表示强力能量,而 0 则是衰弱的符文。
如果你们能将至多翻转一个 0为 1,使得连续强力能量(即 1)的数量达到最大,你们将获得《能量秘典》的钥匙!”

小兔和小猫摩拳擦掌,立刻开始研究如何在这副阵法中取得最大的能量连击。请你帮助他们写出程序,实现这一神奇的翻转术,并返回阵法中连续 1 的最大个数。


💡【题目描述】

给定一个二进制数组 nums,如果至多可以翻转一个 0为 1,请返回数组中连续 1 的最大个数。

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


📥【输入格式】

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

📤【输出格式】

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

📌【数据范围】

  • 1 ≤ n ≤ 10^5
  • nums[i] ∈ {0, 1}

💡【输入输出样例】

样例输入 1

5
1 0 1 1 0

样例输出 1

4

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


样例输入 2

6
1 0 1 1 0 1

样例输出 2

4