不是顺子的情况概括为两类: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