diff --git a/src/main/java/git/snippet/heap/Code_DistanceLessK.java b/src/main/java/git/snippet/heap/Code_DistanceLessK.java index c4f943ffa7e4423dda6d6b8653fa80163065a620..81fe98af7204cd3a56afe1122ddf8e9dba7b0550 100644 --- a/src/main/java/git/snippet/heap/Code_DistanceLessK.java +++ b/src/main/java/git/snippet/heap/Code_DistanceLessK.java @@ -16,10 +16,13 @@ public class Code_DistanceLessK { heap.offer(arr[i]); } int index = 0; - for (; i < arr.length || !heap.isEmpty(); i++) { - if (i < arr.length) { - heap.offer(arr[i]); - } + // O(N*logK) + for (; i < arr.length; i++) { + heap.offer(arr[i]); + // 移动一定不会超过K次 + arr[index++] = heap.poll(); + } + while (!heap.isEmpty()) { arr[index++] = heap.poll(); } }