1. 程式人生 > 實用技巧 >1217. Minimum Cost to Move Chips to The Same Position (E)

1217. Minimum Cost to Move Chips to The Same Position (E)

Minimum Cost to Move Chips to The Same Position (E)

題目

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 poistion 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

題意

有若干個位置,每個位置上有若干個硬幣,現在要將所有硬幣移到一個位置。將一個硬幣移動一個位置的cost為1,移動兩個位置的cost為0,求需要的最小cost。

思路

因為移動兩個位置的cost為0,所以所有奇數位的硬幣都可以移到位置1,所有偶數位的硬幣都可以移到位置2,最後只要考慮從1移到2或從2移到1即可。


程式碼實現

Java

class Solution {
    public int minCostToMoveChips(int[] position) {
        int odd = 0, even = 0;

        for (int i : position) {
            if (i % 2 == 0) {
                even++;
            } else {
                odd++;
            }
        }

        return Math.min(odd, even);
    }
}