# LeetCode.1217-交换芯片(Play with Chips)

## 看题和准备

You can perform any of the two following types of moves any number of times (possibly zero) on any chip:

• Move the i-th chip by 2 units to the left or to the right with a cost of 0.
• Move the i-th chip by 1 unit to the left or to the right with a cost of 1.

There can be two or more chips at the same position initially.

Return the minimum cost needed to move all the chips to the same position (any position).

Example 1:

Input: chips = [1,2,3]
Output: 1
Explanation: Second chip will be moved to positon 3 with cost 1. First chip will be moved to position 3 with cost 0. Total cost is 1.

Example 2:

Input: chips = [2,2,2,3,3]
Output: 2
Explanation: Both fourth and fifth chip will be moved to position two with cost 1. Total minimum cost will be 2.

Constraints:

• 1 <= chips.length <= 100
• 1 <= chips[i] <= 10^9

### 中文翻译

• 将第`i`个芯片向左或向右移动2个单位，成本为0。
• 将第`i`个芯片向左或向右移动1个单位，成本为1。

• 1 <= chips.length <= 100
• 1 <= chips[i] <= 10^9

## 第一种解法

• 如果数组元素全部为偶数，全变成2，成本为0。
• 如果数组元素全部为奇数，全变成1，成本为0。
• 如果奇数元素个数大于偶数元素个数，将偶数元素加1全变为奇数，成本是偶数元素的个数。
• 如果奇数元素个数小于偶数元素个数，将奇数元素加1全变为偶数，成本是奇数元素的个数。
``````public int minCostToMoveChips(int[] chips) {
int even = 0, odd = 0;
for (int chip : chips) {
if (chip%2 == 0) {
even++; //偶数元素个数
} else {
odd++; //奇数元素个数
}
}
return odd > even ? even : odd;
}
``````