题目链接:1217. 玩筹码
移动筹码有一种方式:
- 由于将第
i个筹码的位置从position[i]改变为position[i] + 2或position[i] - 2,时cost = 0,因此将奇数位置的筹码移动到奇数位置,或将偶数位置的筹码移动到偶数位置,花费都是0; - 先以
0花费将筹码移动到 $0$ 和 $1$ 两个位置; - 然后,选择 $0$ 和 $1$ 两个位置中,筹码少的,移动到另一个位置,这样所有筹码就都在同一个位置了。
这样移动,花费就是奇数位置和偶数位置上筹码的个数更少的那个。
from collections import Counter
from typing import List
class Solution:
def minCostToMoveChips(self, position: List[int]) -> int:
cnt = Counter(pos & 1 for pos in position)
if len(cnt) <= 1:
return 0
return cnt.most_common(2)[1][1]