给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。
如果可以,请返回 True;否则,返回 False。
示例 1:
输入:nums = [1,2,3,3,4,4,5,6], k = 4
输出:true
解释:数组可以分成 [1,2,3,4] 和 [3,4,5,6]。
代码
class Solution {
public boolean isPossibleDivide(int[] nums, int k) {
int n=nums.length;
int start=0;
if(n%k!=0) return false;//数量上不满足
Arrays.sort(nums);
for(int i=0;i<n;i++)
{
if(nums[i]==-1) continue;//已经进了集合的
int cur=nums[i],cnt=1;
nums[i]=-1;//标记
for(int j=i+1;j<n;j++)
{
if(cnt==k) break;//找够了数
if(nums[j]==-1) continue;
if(nums[j]-cur==1)//如果满足递增
{
cur=nums[j];//迭代
nums[j]=-1;//标记
cnt++;
}
}
if(cnt!=k) return false;
}
return true;
}
}