public int smallestDistancePair(int[] nums, int k) {
PriorityQueue<PairDiff> minHeap = new PriorityQueue<>();
for (int i = 1; i < nums.length; i++) {
minHeap.add(new PairDiff(i - 1, i, Math.abs(nums[i - 1] - nums[i])));
for (int i = 0; i < k; i++) {
PairDiff curDiff = minHeap.remove();
int index1 = curDiff.index1;
int index2 = curDiff.index2;
if (index2 + 1 < nums.length) {
minHeap.add(new PairDiff(index1, index2 + 1, Math.abs(nums[index1] - nums[index2 + 1])));
class PairDiff implements Comparable<PairDiff> {
int index1, index2, diff;
public PairDiff(int index1, int index2, int diff) {
public int compareTo(PairDiff that) {
return this.diff - that.diff;