第一二一七_玩筹码

题目链接

数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。
你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以):
将第 i 个筹码向左或者右移动 2 个单位,代价为 0。
将第 i 个筹码向左或者右移动 1 个单位,代价为 1。
最开始的时候,同一位置上也可能放着两个或者更多的筹码。
返回将所有筹码移动到同一位置(任意位置)上所需要的最小代价。

思路:移动偶数步的代价为零,所以偶数移动到偶数位置代价为零,奇数移动到奇数位置代价为零,那么最终的代价坑定就是看是奇数少还是偶数少,偶数少就移动偶数,奇数少就移动奇数.

public class 第一二一七_玩筹码 {
    public static int minCostToMoveChips(int[] position) {
        //a 是偶数的个数, b 是奇数的个数
        int a = 0;
        int b = 0;
        for (int i : position) {
            if(i % 2 == 0){
                a++;
            }else{
                b++;
            }
        }
        return a>b?b:a;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3};
        int i = minCostToMoveChips(arr);
        System.out.println(i);
    }
}

posted @ 2020-08-27 20:42  无法手执玫瑰  阅读(47)  评论(0)    收藏  举报