Skip to content

Commit 80015e7

Browse files
committed
Fix embedded scratch text in 14.3 k-closest dry run
1 parent b0ea47d commit 80015e7

1 file changed

Lines changed: 0 additions & 44 deletions

File tree

‎CodingInterviewFightClub/src/ch14-sorting/k-closest-points-to-origin.md‎

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -246,50 +246,6 @@ impl Solution {
246246
}
247247
```
248248

249-
## Dry run
250-
251-
**Input:** `points = [[3,3],[5,-1],[-2,4]]`, `k = 2`.
252-
253-
```
254-
distances: [3,3]->18, [5,-1]->26, [-2,4]->20. target index = k-1 = 1.
255-
256-
partition(0,2): random pivot, say index 1 ([5,-1], dist 26):
257-
partition by 26: all ≤ 26 -> [3,3],[5,-1],[-2,4], pivot at index 2.
258-
pivotIndex 2 > target 1 -> end = 1.
259-
partition(0,1): random pivot, say index 0 ([3,3], dist 18):
260-
partition by 18: [3,3],[5,-1], pivot at index 0.
261-
pivotIndex 0 < target 1 -> start = 1.
262-
(start=1, end=1: loop ends)
263-
264-
return points[0..2) = [[3,3],[5,-1]]?
265-
```
266-
267-
Wait — that gives `[[3,3],[5,-1]]` but the expected output is `[[3,3],[-2,4]]` (distances 18 and 20; `[5,-1]` is 26). Let me recheck. After partition(0,1) with pivot [3,3] (dist 18): partition by 18 — elements ≤ 18: [3,3] only → i ends at 1 after placing [3,3] at index 0... wait: start=0,end=1. pivot dist 18. j=0: points[0]=[3,3], dist 18 ≤ 18 → swap(i=0,j=0), i=1. j=1: [5,-1] dist 26 ≤ 18? no. Then swap(i=1, end=1): pivot goes to index 1. So array: [[3,3],[5,-1]]. pivotIndex=1 == target → break (in the `else break` branch... actually the while loop: start=0,end=1, pivotIndex=1. pivotIndex > k-1? 1 > 1 no. pivotIndex < 1? no. else break. Loop ends with start=0, end=1. points[0..2) = [[3,3],[5,-1]].
268-
269-
Hmm, that's WRONG — [5,-1] (26) should not be in the top-2; [-2,4] (20) should. Let me re-trace the FIRST partition. partition(0,2) with pivot [5,-1] (26): j=0: [3,3] 18 ≤ 26 → swap(0,0), i=1. j=1: skip (j is pivot). j=2: [-2,4] 20 ≤ 26 → swap(i=1, j=2): array becomes [[3,3],[-2,4],[5,-1]], i=2. Then swap(i=2, end=2) (pivot already at end) → [[3,3],[-2,4],[5,-1]], pivotIndex=2.
270-
271-
So after partition 1: [[3,3],[-2,4],[5,-1]], pivotIndex=2 > 1 → end=1. GOOD.
272-
partition(0,1): start=0, end=1. random pivot from {0,1}: say 0 ([3,3], dist 18). Swap(0,1): [[5,-1],[-2,4]]... wait no — current array is [[3,3],[-2,4],[5,-1]], subarray [0..1] = [[3,3],[-2,4]]. pivot_idx = rand(0,1). Say 0 ([3,3], 18). swap(0,1): [[-2,4],[3,3],[5,-1]]. pivot = [3,3] (18). j=0: [-2,4] dist 20 ≤ 18? NO. So i stays 0. swap(i=0, end=1): [[3,3],[-2,4],[5,-1]] — pivot [3,3] goes to index 0! pivotIndex = 0 < target 1 → start = 1. Loop: start=1, end=1 → ends.
273-
274-
return points[0..2) = [[3,3],[-2,4]] ✓ CORRECT!
275-
276-
My scratch trace had an error: after partition(0,1), the pivot lands at index 0 (not 1), because [-2,4] (20) is NOT ≤ 18, so nothing moves left of the pivot. Let me redo: partition by pivot 18: [-2,4] has dist 20 > 18, so it does NOT move to the left region; i stays at 0; pivot swaps to index 0. So [3,3] ends at index 0, [-2,4] at index 1, and the k=2 answer [[3,3],[-2,4]] ✓.
277-
278-
Good — the algorithm is correct; my scratch slipped. In the dry run I write, I must be careful. Let me write the final part-2 with a CORRECT trace:
279-
280-
```
281-
partition(0,2): pivot [5,-1] (26): partition -> [[3,3],[-2,4],[5,-1]], pivotIndex=2 > 1 -> end=1
282-
partition(0,1): subarray [[3,3],[-2,4]]; random pivot [3,3] (18):
283-
[-2,4] (20) > 18 -> stays right; pivot swaps to index 0.
284-
array: [[3,3],[-2,4],[5,-1]], pivotIndex=0 < 1 -> start=1. loop ends.
285-
return points[0..2) = [[3,3],[-2,4]] ✓
286-
```
287-
288-
Let me write the final content.<|end▁of▁thinking|>I caught another scratch slip in my `k-closest` trace (the second partition's pivot actually lands at index 0, not 1, giving the correct `[[3,3],[-2,4]]`). Writing the final content with the verified trace:
289-
290-
<||DSML||tool_calls>
291-
<||DSML||invoke name="bash">
292-
<||DSML||parameter name="command" string="true">cd /Users/arpanpathak/Projects/data_science/CrackGoogle/CodingInterviewFightClub && cat >> src/ch14-sorting/k-closest-points-to-origin.md <<'MDEOF'
293249

294250
## Dry run
295251

0 commit comments

Comments
 (0)