华为OD机试真题-堆内存申请-2023年OD统一考试(C卷)
public static int cal(int target, int[][] nums) {
int len = nums.length;
Arrays.sort(nums, Comparator.comparingInt(a -> a[0]));
//起始地址
int ret = 0;
// 最小空间
int min = 1000;
// 计算开头
if(nums[0][0] >= target){
min = nums[0][0];
}
// 计算中间位置
for(int i = 1; i < nums.length; i++){
// 内存快大小
int tmp = nums[i][0] - nums[i-1][1] - nums[i-1][0];
if(tmp >= target && tmp < min){
ret = nums[i-1][1] + 1;
min = tmp;
}
}
//计算结尾
int tmp = 99 - nums[len - 1][0] - nums[len - 1][1];
if(tmp >= target && tmp < min){
ret = nums[len-1][1] + 1;
}
return ret;
}