class Solution {
public boolean isPossibleDivide(int[] nums, int k) {
int len = nums.length;
if(len % k != 0) return false;
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
}
Arrays.sort(nums);
for(int i = 0; i <= nums.length - k;){
if(map.get(nums[i]) == 0) {
i++;
continue;
}
for(int j = 0; j < k; j++){
if(map.get(nums[i] + j) == null) return false;
int num = map.get(nums[i] + j);
if(num <= 0) return false;
map.put(nums[i] + j, num - 1);
}
}
return true;
}
}
class Solution {
public String intToRoman(int num) {
int[] number = new int[]{1000,900,500,400,100,90,50,40,10,9,5,4,1};
String[] numberStr = new String[]{"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
StringBuilder builder = new StringBuilder();
for (int i = 0; i < number.length; i++) {
if(num>=number[i]){
int count = num/number[i];
for (int j = 0; j < count; j++) {
builder.append(numberStr[i]);
num-=number[i];
}
}
}
return builder.toString();
}
}
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int k = m + n - 1;
int i = m - 1;
int j = n - 1;
while (i >= 0 && j >= 0) {
if (nums1[i] <= nums2[j]) {
nums1[k] = nums2[j];
j--;
k--;
} else {
nums1[k] = nums1[i];
i--;
k--;
}
}
for (int t = 0; t < j + 1; t++) {
nums1[t] = nums2[t];
}
}
}