在 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