Minimum Cost to Move Chips to The Same Position

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:

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:


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;
    }
}