【每日一题0727】移动筹码

:woman_mage:已知一个列表表示第几个位置上有几个筹码,一个位置可以放无限个筹码。每个筹码,向左或向右挪动1位耗费是1,向左或向右挪动2位耗费是0。请编写一个python函数,计算出把所有筹码放到同一个位置最小的耗费是多少。

示例:

[1,2,3]:把第1位1个的筹码挪到第3位耗费是0,把第1位的1个筹码挪到第2位耗费是1,最低耗费是1。
[2,2,2,3,3]:把第3位的2个筹码挪到第2位,最低耗费是2。

题目难度:简单
题目来源:shoppe面试真题
def move(nums:list): 
    pass
    
assert move([1,2,3]) == 1
assert move([2,2,2,3,3]) == 2
def move(nums: list):
    return min([i % 2 for i in nums].count(0), [i % 2 for i in nums].count(1))
assert move([1,2,3]) == 1
assert move([2,2,2,3,3]) == 2

求更多shopee面试真题,感谢!

def move(nums:list):
    count_a=0
    count_b=0
    for i in nums:
        if i%2==0:
            count_a+=1
        else:
            count_b+=1
    res=min(count_b,count_a)
    return res

这个题目说的真绕

def move(nums: list):
    a = 0
    b = 0
    for i in nums:
        if i % 2 == 0:
            a += 1
        else:
            b += 1
    return min(a, b)

assert move([1, 2, 3]) == 1
assert move([2, 2, 2, 3, 3]) == 2

不太理解,为什么题目会转化为求min(偶数和奇数的个数)

这题坑就坑在题目说的有问题

def move(nums:list): 
    count_0 = 0
    count_1 = 0
    for i in nums:
        if i % 2 == 0:
            count_0 += 1
        else:
            count_1 += 1
    return min(count_0, count_1)
    
assert move([1,2,3]) == 1
assert move([2,2,2,3,3]) == 2