題目描述
數(shù)軸上放置了一些籌碼伞广,每個籌碼的位置存在數(shù)組 chips 當(dāng)中。
你可以對 任何籌碼 執(zhí)行下面兩種操作之一(不限操作次數(shù)蕴坪,0 次也可以):
將第 i 個籌碼向左或者右移動 2 個單位枕赵,代價為 0岸晦。
將第 i 個籌碼向左或者右移動 1 個單位樊卓,代價為 1壁畸。
最開始的時候茅郎,同一位置上也可能放著兩個或者更多的籌碼癣朗。
返回將所有籌碼移動到同一位置(任意位置)上所需要的最小代價拾因。
示例 1:
輸入:chips = [1,2,3]
輸出:1
解釋:第二個籌碼移動到位置三的代價是 1,第一個籌碼移動到位置三的代價是 0旷余,總代價為 1绢记。
示例 2:
輸入:chips = [2,2,2,3,3]
輸出:2
解釋:第四和第五個籌碼移動到位置二的代價都是 1,所以最小總代價為 2正卧。
提示:
1 <= chips.length <= 100
1 <= chips[i] <= 10^9
解題思路:
從題目描述可知蠢熄,奇數(shù)處移動到奇數(shù)處,偶數(shù)移動到偶數(shù)處代價都為0炉旷,奇數(shù)移動到偶數(shù)或偶數(shù)移動到奇數(shù)處代價為1签孔。那么這個問題就能簡化為求奇數(shù)和偶數(shù)那個最少,即代價最低窘行。
int minCostToMoveChips(vector<int>& position) {
int odd = 0;
int even = 0;
for (int i = 0;i < position.size();i++) {
if (position[i] % 2 == 1) {
odd++;
} else {
even++;
}
}
return min(odd, even);
}