We have n chips, where the position of the ith chip is position[i].
We need to move all the chips to the same position. In one step, we can change the position of the ith chip from position[i] to:
position[i] + 2 or position[i] - 2 with cost = 0.
position[i] + 1 or position[i] - 1 with cost = 1.
Return the minimum cost needed to move all the chips to the same position.
Example 1:
Input: position = [1,2,3]
Output: 1
Explanation: First step: Move the chip at position 3 to position 1 with cost = 0.
Second step: Move the chip at position 2 to position 1 with cost = 1.
Total cost is 1.
Example 2:
Input: position = [2,2,2,3,3]
Output: 2
Explanation: We can move the two chips at position 3 to position 2. Each move has cost = 1. The total cost = 2.
Example 3:
Input: position = [1,1000000000]
Output: 1
Constraints:
1 <= position.length <= 100
1 <= position[i] <= 10^9
Solution:
class Solution {
public int minCostToMoveChips(int[] position) {
Map<Integer, Integer> count = new HashMap();
for (int val : position) {
count.put(val, count.getOrDefault(val, 0) + 1);
}
int res = Integer.MAX_VALUE;
for (int p : count.keySet()) {
int curr = 0;
for (int n : count.keySet()) {
if (n != p) {
int diff = Math.abs(n - p);
if (diff % 2 == 1) {
curr += count.get(n);
}
}
}
res = Math.min(res, curr);
}
return res;
}
}