力扣_刷题本_算法题

文章目录

      • 1.玩筹码_20220708

1.玩筹码_20220708

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

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

position[i] + 2 或 position[i] - 2 ,此时 cost = 0
position[i] + 1 或 position[i] - 1 ,此时 cost = 1
返回将所有筹码移动到同一位置上所需要的 最小代价 。
力扣_刷题本_算法题_第1张图片
力扣_刷题本_算法题_第2张图片
解题思路:
相邻的筹码所耗费的代价为1,中间间隔一个的两个筹码之间所耗费的代价为0。奇数间隔着摞到一起所耗费代价为0,偶数间隔着摞到一起所耗费代价为0,至此将偶数位的筹码摞成一摞,奇数位的筹码摞成一摞。奇数摞和偶数摞相邻 最后摞成一摞时每移动一个耗费代价为一,只需比较哪一摞的个数少动哪一摞。所以,此问题可以理解为比较奇数偶数位个数最少问题。
代码如下:

class Solution {
    public int minCostToMoveChips(int[] position) {
        int jishu = 0;
        int oushu = 0;
        for(int i = 0; i < position.length; i++){
        if(position[i]% 2 == 0){
            oushu++;
        }else{
            jishu++;
        }
        }
        return Math.min(jishu,oushu);   
    }
}

你可能感兴趣的:(每日一题,leetcode,算法,职场和发展)