Có các chip, chip thứ i ở vị trí chips[i]. Có thể thực hiện bất kỳ số lần:
- Di chuyển chip i 2 đơn vị trái/phải với chi phí 0.
- Di chuyển chip i 1 đơn vị trái/phải với chi phí 1.
Ban đầu có thể có nhiều chip cùng vị trí. Tìm chi phí tối thiểu để đưa tất cả chip về cùng một vị trí (vị trí cuối tùy ý). Ví dụ: chips = [2,2,2,3,3] → chi phí = 2 (chip 4 và 5 dịch 1 đơn vị về 2).
Giải pháp:
- Đếm số chip ở vị trí lẻ (odd) và chẵn (even).
- Trả về min(odd, even).
Ví dụ C++
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int minCostToMoveChips(vector<int>& chips) {
int odd = 0, even = 0;
for (int i = 0; i < chips.size(); i++) {
if (chips[i] & 1) odd++;
else even++;
}
return min(odd, even);
}
};
int main() {
Solution ob;
vector<int> v1 = {2,2,2,3,3};
cout << ob.minCostToMoveChips(v1);
}
Đầu vào
[2,2,2,3,3]
Đầu ra
2