扑克牌顺子

这道题的输入数据其实规模很小,但是因为这个连续性的问题很头疼,一开始并没有想到一个很泛化的解决方案,但是实际上,我们可以对数组进行排序,然后找到里面总共0的个数,再对剩余的数之间的差距求和,这个和大于0的总数则表示他们之间的差距是无法填充满的,另外还要注意有对子的情况

class Solution:
    def IsContinuous(self, numbers):
        # write code here
        if len(numbers) != 5:
            return False

        countOfZero = numbers.count(0)
        numbers.sort()
        cum = 0
        for i in xrange(countOfZero, 4):
            if numbers[i + 1] == numbers[i]:
                return False
            cum += (numbers[i + 1] - numbers[i] - 1)
        return cum <= countOfZero

results matching ""

    No results matching ""