Untitled
unknown
plain_text
2 years ago
796 B
16
Indexable
class Solution {
public int minimizeMax(int[] nums, int p) {
if (p == 0) return 0;
if (nums.length < 2) return -1;
Arrays.sort(nums);
//
int[] prev = new int[nums.length - 1];
prev[0] = nums[1] - nums[0];
for (int i = 1; i < nums.length - 1; i++) {
prev[i] = Math.min(prev[i-1], nums[i+1] - nums[i]);
}
for (int pair = 1; pair < p; pair++) {
int[] next = new int[prev.length];
next[0] = Integer.MAX_VALUE;
next[1] = Integer.MAX_VALUE;
for (int i = 2; i < next.length; i++) {
next[i] = Math.min(next[i-1], Math.max(nums[i+1] - nums[i], prev[i-2]));
}
prev = next;
}
return prev[prev.length - 1];
}
}Editor is loading...