输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数。返回你是否能做出这样的分割?
示例 1:
输入: [1,2,3,3,4,5] 输出: True 解释: 你可以分割出这样两个连续子序列 : 1, 2, 3 3, 4, 5
示例 2:
输入: [1,2,3,3,4,4,5,5] 输出: True 解释: 你可以分割出这样两个连续子序列 : 1, 2, 3, 4, 5 3, 4, 5
示例 3:
输入: [1,2,3,4,4,5] 输出: False
提示:
- 输入的数组长度范围为 [1, 10000]
class Solution {
public:
bool isPossible(vector<int>& nums) {
if(nums.size()<3)
return false;
int preFlag =0;
int nextFlag = 0;
for(int i=0;i<nums.size()-1;i++)
{
if((nums[i]==nums[i+1] )|| (i>=(nums.size()-1)) || (nums[i+1] - nums[i] >1 ))
{
nextFlag=i;
if(nextFlag - preFlag<2)
{
return false;
}
else
{
preFlag=i+1;
continue;
}
}
}
return true;
}
};