给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个长度至少为 3 的子序列,其中每个子序列都由连续整数组成。
如果可以完成上述分割,则返回 true ;否则,返回 false
解题思路:
乍一看 这不是打扑克呢嘛
从最小的开始抽 1 -> 2 -> 3 -> 3 -> 4 那我就默认 前三个算是一个完整序列了
第二个三就是新序列头了要头插法加入,新加入的4就插在新3后面即可
最关键的一点在于如何处理 3 -> 3 的情况
当前插入序列的值和当前序列的最后一个值是否是连续的
是 插入 break返回
不是 作为新头 并且利用头插法 insert(0, [num])
for - else:
python自带的一种特殊语法
当for循环正常结束时会进入到else语句块中执行代码,
如果for循环是因为执行了break语句导致提前结束的,则不会进入到else语句块
class Solution(object):
def isPossible(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
res = []
for num in nums:
for r in res:
if num == r[-1] + 1:
r.append(num)
break
else:
res.insert(0, [num])
return all(len(r) >= 3 for r in res)



