不是顺子的情况概括为两类:1.有除0以外的重复数字;2.除0以外不重复,列表中最大值与最小值之差大于4。
第一种情况好理解,除0以外的数字重复了就无法组成顺子;
第二种情况,在任意一个顺子序列中,最大值与最小值等于4,万能牌可替换任意位置,故满足条件的是列表中最大值与最小值之差小于等于4。
代码思路:1.删除所有的0元素(记得使用copy函数,不然每次删除列表的元素后,位置都会变化);2.判断有无除0以外的重复数字;3.判断最大值与最小值之差。


#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#

# @param numbers int整型一维数组 
# @return bool布尔型
#
class Solution:
    def IsContinuous(self , numbers: List[int]) -> bool:
        # write code here
        for item in numbers.copy():
            if item == 0:
                numbers.remove(0)
        B = set(numbers)
        if len(B) != len(numbers):
            return False
        else:
            if max(B) - min(B) <= 4:
                return True
            else:
                return False