在 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

更新於: 27-4-2020

292 views

提升你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.