力扣659.分割数组为连续子序列
给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。
如果可以完成上述分割,则返回 true ;否则,返回 false 。
贪心算法:和打扑克牌一样,如果可以接上下一个序列,就顺序添加当前的这个值,如果不是则从头插入继续进行,最后比较是否所有序列长度大于等于3。
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N l o g N ) O(NlogN)O(NlogN) | O ( N ) O(N)O(N) | 96ms (96.39%) |
res = []
for n in nums:
for v in res:
if n == v[-1] + 1:
v.append(n)
break
else:
res.insert(0, [n])
return all([len(v) >= 3 for v in res])