leetcode 1217. 玩筹码

118 阅读1分钟

[toc] leetcode 1217. 玩筹码

题目描述

  1. 玩筹码

有 n 个筹码。第 i 个筹码的位置是 position[i] 。

我们需要把所有筹码移到同一个位置。在一步中,我们可以将第 i 个筹码的位置从 position[i] 改变为:

position[i] + 2 或 position[i] - 2 ,此时 cost = 0 position[i] + 1 或 position[i] - 1 ,此时 cost = 1 返回将所有筹码移动到同一位置上所需要的 最小代价 。

示例 1:

输入:position = [1,2,3] 输出:1 解释:第一步:将位置3的筹码移动到位置1,成本为0。 第二步:将位置2的筹码移动到位置1,成本= 1。 总成本是1。 示例 2:

输入:position = [2,2,2,3,3] 输出:2 解释:我们可以把位置3的两个筹码移到位置2。每一步的成本为1。总成本= 2。 示例 3:

输入:position = [1,1000000000] 输出:1

提示:

1 <= position.length <= 100 1 <= position[i] <= 10^9

解题思路

法1

方法1:计数

  1. 维护两个计数变量,分别记录奇数位置的筹码数量与偶数位置的筹码数量

  2. 遍历数组,记录数值

  3. 比较奇数位置与偶数位置数值的大小,输出较小 的数值

  • 时间复杂度(O(n))
  • 空间复杂度(O(1))

执行结果

法1

func minCostToMoveChips(position []int) int{
    //记录返回结果
    r1,r2:=0,0
    //遍历数组,单数位置与双数位置分开记录
    for i:=0;i<len(position);i++{
        if  position[i]%2==1{
            r1++
        }else{
            r2++
        }
    }
    //选择较小的数输出
    if r1>r2{
        return r2
    }
    return r1
}

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 0 ms , 在所有 Go 提交中击败了 100.00% 的用户 内存消耗: 2 MB , 在所有 Go 提交中击败了 100.00% 的用户 通过测试用例: 51 / 51

本文由mdnice多平台发布