在 C++ 中玩晶片
假設有若干個晶片,第 i 個晶片當前的位置為 chips[i]。我們可以在任何一個晶片上執行以下兩種型別的操作任意多次(可能為零次) −
將第 i 個晶片向左移動 2 個單位或向右移動 2 個單位,花費為 0。
將第 i 個晶片向左移動 1 個單位或向右移動 1 個單位,花費為 1。
一開始,可能有兩個或更多個晶片。我們必須返回將所有晶片移動到同一位置所需的最小花費。最終位置可以是任意位置。因此,如果初始的晶片陣列為 [2,2,2,3,3],則輸出將為 2。第四個和第五個晶片均將以花費 1 移動到位置二。因此,總最小花費將為 2
要解決此問題,我們將遵循以下步驟 −
odd := 0 且 even := 0
對於從 0 到陣列長度的 i
如果 chips[i] 為奇數,則增加 odd,否則增加 even
返回 odd 和 even 的最小值。
示例 (C++)
讓我們看以下實現,以更好地理解 −
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int minCostToMoveChips(vector<int>& chips) {
int odd =0;
int even = 0;
for(int i =0;i<chips.size();i++){
if(chips[i]&1)odd++;
else even++;
}
return min(odd,even);
}
};
main(){
Solution ob;
vector<int> v1 = {2,2,2,3,3};
cout << ob.minCostToMoveChips(v1);
}輸入
[2,2,2,3,3]
輸出
2
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP