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

求使数组元素奇偶交替的最少操作次数的最优解法

问题分析与优质解法思路

问题核心

通过对数组元素执行任意次floor(item/2)操作,让数组呈现奇偶交替状态(两种可能:奇→偶→奇… 或 偶→奇→偶…),统计所需的最少总操作次数。

关键认知

每个元素的奇偶性可以通过多次除以2取整切换,但切换到目标奇偶性的操作次数不同:

  • 偶数转奇数:需要不断除以2,直到得到奇数,操作次数是除以2的次数(比如6→3要1次,8→1要3次);
  • 奇数转偶数:只需除以2一次(比如5→2要1次);
  • 本身符合目标奇偶性的,操作次数为0。

优质解法步骤

  1. 提前算好每个元素的转换成本
    对数组里的每个元素,分别算出:

    • 转成奇数需要的最少操作次数;
    • 转成偶数需要的最少操作次数。
      示例代码片段(Python):
    def get_conversion_cost(x):
        # 计算转成奇数的最少操作次数
        cost_odd = 0
        temp = x
        while temp % 2 == 0 and temp != 0:
            temp = temp // 2
            cost_odd += 1
        
        # 计算转成偶数的最少操作次数
        cost_even = 0
        if x % 2 == 1:
            cost_even = 1
        return cost_odd, cost_even
    
  2. 计算两种交替模式的总操作次数
    奇偶交替只有两种合法模式,分别计算总代价:

    • 模式1:奇数开头(索引偶数位要奇,奇数位要偶):
      遍历数组,索引为偶数时累加该元素转奇的成本,奇数时累加转偶的成本。
    • 模式2:偶数开头(索引偶数位要偶,奇数位要奇):
      遍历数组,索引为偶数时累加该元素转偶的成本,奇数时累加转奇的成本。
  3. 取最小值作为最终答案
    对比两种模式的总操作次数,更小的那个就是最少需要的操作次数。

对测试用例的修正计算

测试用例items = [6, 5, 9, 7, 3]:

  • 各元素转换成本:
    • 6:转奇1次,转偶0次
    • 5:转奇0次,转偶1次
    • 9:转奇0次,转偶1次
    • 7:转奇0次,转偶1次
    • 3:转奇0次,转偶1次
  • 模式1总代价:1+1+0+1+0=3
  • 模式2总代价:0+0+1+0+1=2
  • 正确答案应为2,而非你代码得到的3——你的代码错误地将每个需要改变奇偶性的元素算作1次操作,既没考虑元素转换可能需要多次操作的情况,也没算出真正的最小总操作次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:50:27