[toc] leetcode 1217. 玩筹码
题目描述
- 玩筹码
有 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:计数
-
维护两个计数变量,分别记录奇数位置的筹码数量与偶数位置的筹码数量
-
遍历数组,记录数值
-
比较奇数位置与偶数位置数值的大小,输出较小 的数值
- 时间复杂度(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多平台发布