You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算将二进制数组转换为交替序列所需的最小元素翻转次数

二进制交替序列最少翻转次数实现方案

实现思路

二进制交替序列仅存在两种合法模式:

  • 模式A:以0开头,按0,1,0,1...规则交替,下标i(从0开始计数)位置的预期值为i % 2
  • 模式B:以1开头,按1,0,1,0...规则交替,下标i位置的预期值为1 - (i % 2)
    我们只需分别计算原数组转换为两种模式所需的翻转次数,取最小值即为最终结果,该方案时间复杂度为O(n)、空间复杂度为O(1),是最优解法。

测试用例验证

以下验证对应需求给出的所有测试场景:

  • 测试用例1:a = [1,0,1,0,1,1]
    转模式A需要翻转5次,转模式B需要翻转1次,取最小值1,符合预期
  • 测试用例2:a = [1,1,0,1,1]
    转模式A需要翻转2次,转模式B需要翻转3次,取最小值2,符合预期
  • 测试用例3:a = [0,1,1,0]
    转模式A需要翻转2次,转模式B需要翻转2次,取最小值2,符合预期
  • 测试用例4:a = [0,1,0]
    转模式A需要翻转0次,转模式B需要翻转3次,取最小值0,符合预期

代码实现(Python)

def min_flips(arr):
    # count0: 转换为0开头模式的翻转次数
    # count1: 转换为1开头模式的翻转次数
    count0 = count1 = 0
    for idx, num in enumerate(arr):
        if num != idx % 2:
            count0 += 1
        if num != 1 - (idx % 2):
            count1 += 1
    return min(count0, count1)

如果需要同时输出修改后的交替序列,只需对比count0和count1的大小,选择对应模式逐位生成即可。

内容的提问来源于stack exchange,提问作者gowtham natrajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:00