题目:数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。
你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以):
将第 i 个筹码向左或者右移动 2 个单位,代价为 0。
将第 i 个筹码向左或者右移动 1 个单位,代价为 1。
最开始的时候,同一位置上也可能放着两个或者更多的筹码。
返回将所有筹码移动到同一位置(任意位置)上所需要的最小代价。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/play-with-chips
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码如下
class Solution {
public int minCostToMoveChips(int[] chips)
{
int count1=0;
int count2=0;
for (int i=0;i<chips.length;i++)
{
if(chips[i]%2==0)
count1++;
else
count2++;
}
if(count1>count2)
return count2;
else
return count1;
}
}
首先,我们考虑如果一个筹码在偶数位置,那么它移动到偶数位置的代价为0,奇数亦然,那么我们只需要遍历数组,记录偶数和奇数的个数,选择较少的一方移动,其每个元素移动的代价都为一。 例如,将100移动到1,需要先移动到0,代价为0,再移动到1,代价为1;