Sort a nearly sorted array (each element at most k positions away)?
Short answer: public int[] SortNearlySorted(int[] nums, int k) { var result = new List<int>(); var minHeap = new SortedSet<(int val, int index)>(); for (int i = 0; i < nums.Length; i++) { minHeap.Add((nums[i], i)); if (minHeap.Count > k) { var min = minHeap.Min; minHeap.Remove(min); result.Add(min.val); } } while (minHeap.Count > 0) { var min = minHeap.Min; minHeap.Remove(min); result.Add(min.val); } return result.ToArray(); }…
Explain a bit more
Explanation: Use a min-heap of size k+1 to always extract the smallest element in the current window.
Example code
public int[] SortNearlySorted(int[] nums, int k) {
var result = new List<int>();
var minHeap = new SortedSet<(int val, int index)>();
for (int i = 0; i < nums.Length; i++) { minHeap.Add((nums[i], i)); if (minHeap.Count > k) {
var min = minHeap.Min; minHeap.Remove(min); result.Add(min.val); }
} while (minHeap.Count > 0) { var min = minHeap.Min; minHeap.Remove(min); result.Add(min.val); }
return result.ToArray();
} Explanation: Use a min-heap of size k+1 to always extract the smallest element in the current window.
Real-world example (ShopNest)
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
Say this in the interview
- Define — one clear sentence (the short answer above).
- Example — relate it to a project like ShopNest or your real work.
- Trade-off — when you would not use it.
Share this Q&A
Share preview image: https://www.toolliyo.com/images/toolliyo-logo.png