如果把这道题看成一个模拟的话
代码还是很长的
由于蒟蒻只会模拟

于是乎

一个神奇的 python 模拟伪代码(伪到极致)出现了:
class Solution:
    def IsContinuous(self,numbers):
        # ① 求0的个数
        # ② 求列表中有没有重复的数
        # ③ 算出列表遍历的起始位置和结束位置
        # ④ 求出共有多少位置需要填0
        # ⑤ 看0的个数够不够填充
盲猜一手 30 行(记住这句话)

正正文

模拟嘛
不难理解
跟着思路走一遍就有了

① 求 0 的个数

遍历一遍列表
zero=0
for i in numbers:
    if i==0:
        zero+=1
非常简单

② 求列表中有没有重复的数

首先需要把 0 去掉
因为 0 有可能重复(但 0 重复并没有错)
#这里先逆序排下序方便pop
numbers.sort()
numbers=numbers[::-1]
for i in range(zero):
    numbers.pop()
现在这个列表就是一个逆序没有 0 的列表了
原列表长度和集合去重后长度比较一下就可以了
length=len(numbers)
length2=len(set(numbers))
if length!=length2:
    return False

③ 算出列表遍历的起始位置和结束位置

这是为了方便后面求填 0 的个数
遍历标记一下
在此之前需要一个桶标记一下存在的数
1) begin  就是第一个遇见 1 的位置
2) end  就是遇见 1 的个数等于去 0 后列表长度时候的位置
思路很明确,代码很难写
#这是个桶
t=[0,0,0,0,0,0,0,0,0,0,0,0,0,0]
begin=0
end=0
for i in numbers:
    t[i]+=1
#当前遍历位置
pos=0
#当前遍历到为1的个数
nums=0
for i in t:
    if i!=0:
        if begin==0:
            begin=pos
        nums+=1
    if nums==length and end==0:
        end=pos
    pos+=1

④ + ⑤ 求出共有多少位置需要填 0 + 看 0 的个数够不够填充

这个不难
计数+比较
#找空位
z=0
for i in t[begin:end+1]:
    if i==0:
        z+=1

if z>zero:
    return False
else:
    return True
模拟基本就完成了
总代码就是这样
class Solution:
    def IsContinuous(self,numbers):
        zero=0
        numbers.sort()
        numbers=numbers[::-1]
        for i in numbers:
            if i==0:
                zero+=1
        for i in range(zero):
            numbers.pop()
        length=len(numbers)
        length2=len(set(numbers))
        if length!=length2:
            return False
        t=[0,0,0,0,0,0,0,0,0,0,0,0,0,0]
        begin=0
        end=0
        for i in numbers:
            t[i]+=1
        pos=0
        nums=0
        for i in t:
            if i!=0:
                if begin==0:
                    begin=pos
                nums+=1
            if nums==length and end==0:
                end=pos
            pos+=1
        z=0
        for i in t[begin:end+1]:
            if i==0:
                z+=1
        if z>zero:
            return False
        else:
            return True
mmp 这40来行

切记啊——模拟伤身