题目描述
给你一个按升序排序的整数数组 num
(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3
测试用例
输入:[1 2 3 3 4 5]
输出:true
解释:可以拆分出1 2 3;3 4 5 长度均大于三的连续序列
输入:[1 2 3 3 4 4 5 5]
输出:true
解释:可以拆分成1 2 3 4 5;3 4 5长度均大于三的连续序列
输入:[1 2 3 4 4 5]
输出:false
解题思路一:哈希表+小根堆
借助动态规划的思想,考虑一个数字x出现时,无非有这样两种情况:
1. 存在以x-1结尾的串,则只需要将该数字串接到串尾即可;当有多个串时,我们希望将其串接到长度最小的串
2. 不存在以x-1结尾的串,那么我们需要建立以x开头的串
要想完成上述操作,必须借助合理的数据结构,我们可以知道的一个事实时:已知一个串的末尾数字和长度,就可以唯一定位该串,因为串时连续递增的
所以我们可以设计一个哈希表&