貪心算法 玩籌碼

2020-06-18 15:07 更新

題目

難度:簡(jiǎn)單

數(shù)軸上放置了一些籌碼,每個(gè)籌碼的位置存在數(shù)組 chips 當(dāng)中。

你可以對(duì) 任何籌碼 執(zhí)行下面兩種操作之一(不限操作次數(shù),0 次也可以):

將第 i 個(gè)籌碼向左或者右移動(dòng) 2 個(gè)單位,代價(jià)為 0。 將第 i 個(gè)籌碼向左或者右移動(dòng) 1 個(gè)單位,代價(jià)為 1。

最開始的時(shí)候,同一位置上也可能放著兩個(gè)或者更多的籌碼。

返回將所有籌碼移動(dòng)到同一位置(任意位置)上所需要的最小代價(jià)。

示例 1:

輸入:chips = [1,2,3]
輸出:1
解釋:第二個(gè)籌碼移動(dòng)到位置三的代價(jià)是 1,第一個(gè)籌碼移動(dòng)到位置三的代價(jià)是 0,總代價(jià)為 1。

示例 2:

輸入:chips = [2,2,2,3,3]
輸出:2
解釋:第四和第五個(gè)籌碼移動(dòng)到位置二的代價(jià)都是 1,所以最小總代價(jià)為 2。

提示:

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

解題

1.理解題意

要尋求最小的代價(jià) 所以盡可能移動(dòng)2 就是單移動(dòng)單,雙移動(dòng)到雙 全部移動(dòng)完之后,分為兩股,將少的一邊移動(dòng)

2.代碼實(shí)現(xiàn)

class Solution {
    public int minCostToMoveChips(int[] chips) {
        int dan=0,shuang=0;
        for(int i=0;i<chips.length;i++){
            if(chips[i]%2==0){
                shuang++;
            }else{
                dan++;
            }
        }
        return Math.min(dan,shuang);
    }
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)