划分数组为连续数字的集合

给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。
如果可以,请返回 true;否则,返回 false。

  • 输入:nums = [1,2,3,3,4,4,5,6], k = 4

  • 输出:true

  • 解释:数组可以分成 [1,2,3,4] 和 [3,4,5,6]。

  • 输入:nums = [3,2,1,2,3,4,3,4,5,9,10,11], k = 3

  • 输出:true

  • 解释:数组可以分成 [1,2,3] , [2,3,4] , [3,4,5] 和 [9,10,11]。

  • 输入:nums = [3,3,2,2,1,1], k = 3

  • 输出:true

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var isPossibleDivide = function(nums, k) {
let len = nums.length
if (len % k !== 0) return false
nums = nums.sort((a, b) => a - b)
for(let i = 0;i<nums.length;i++){
if(!nums[i]) continue;
let count = 0;
for(let j = i + 1; j < nums.length && count != k -1; j++){
if(nums[j] - nums[i] === count + 1){
count++;
nums[j] = 0;
}
}
if(count !== k - 1){
return false
}
}
return true;
};