1296. 划分数组为连续数字的集合
给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。
如果可以,请返回 true;否则,返回 false。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/divide-array-in-sets-of-k-consecutive-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
class Solution {
public boolean isPossibleDivide(int[] nums, int k) {
if (nums == null || nums.length == 0) {
return true;
}
if (nums.length % k != 0) {
return false;
}
Arrays.sort(nums);
Map<Integer, Integer> numMap = new HashMap<>();
for (int num : nums) {
numMap.put(num, numMap.getOrDefault(num, 0) + 1);
}
for (int num : nums) {
if (!numMap.containsKey(num)) {
continue;
}
for (int i = 0; i < k; ++i) {
int need = num + i;
int leave = numMap.getOrDefault(need, 0);
if (leave == 0) {
return false;
}
if (leave == 1) {
numMap.remove(need);
} else {
numMap.put(need, leave - 1);
}
}
}
return true;
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号