Chapter 23: Heap Data Structure Challenges
func getNthSmallestElement(n: Int, elements: [Int]) -> Int? {
// Your code here
+ var heap = Heap(sort: <, elements: elements) // O(n)
+ var current = 1 // 當前最小index的指針
+ while !heap.isEmpty {
+ let element = heap.remove() // O(log n)
+ if current == n { // 會重複執行n次,每次remove動作, 所以O(nlog n)
+ return element
+ }
+ current += 1
+ }
+
return nil
}
Last updated