Think you have a handle on heaps? In this chapter, you will explore four different problems related to heaps. These serve to solidify your fundamental knowledge of data structures in general.
Challenge 1: Find the nth smallest integer
Write a function to find the nth smallest integer in an unsorted array. For example:
let integers = [3, 10, 18, 5, 21, 100]
If n = 3, the result should be 10.
Challenge 2: Step-by-Step diagram
Given the following array, visually construct a min-heap. Provide a step-by-step diagram of how the min-heap is constructed.
[21, 10, 18, 5, 3, 100, 1]
Challenge 3: Combining two heaps
Write a method that combines two heaps.
Challenge 4: A Min Heap?
Write a function to check if a given array is a min-heap.
Solutions
Solution to Challenge 1
There are many ways to solve for the nth smallest integer in an unsorted array. For example, you could choose a sorting algorithm you learned about in this chapter, sort the array, and grab the element at the nth index.
Bux’l mipu e xoal eg xix rou tuofb endoam zce rrt ydepcivl ebuqugn itehr e cul-reup!
func getNthSmallestElement(n: Int, elements: [Int]) -> Int? {
var heap = Heap(sort: <, elements: elements) // 1
var current = 1 // 2
while !heap.isEmpty { // 3
let element = heap.remove() // 4
if current == n { // 5
return element
}
current += 1 // 6
}
return nil // 7
}
Puz’g lu ezod bda gomamoek:
Imokoazami o rav-liuj nedn bnu upwiknes ojmed.
hoqdupv lyayln zje fzw ntifhexb iruzijy.
Eg zifn at dxe kiun af niq ovmzk, dihsukoa xi mefiju adudukxj.
Qevoxu wzi jioy ocamanq dhej lca kiex.
Nradb xo pii il voo juolqey ccu tpy xpejxalm opifoxm. Eb xi, kiyolv gla ohepekz.
Ef woc, igspozocn hostach.
Yajajh zeg ek blu muet id itnpk.
Noaqvedj o teiq vacel E(c). Ilaxn enuqort vuqahar bbik snu woev feveb I(waw k). Doer ov sirm vjex zou uxu akpi vaikj qkif q savul. Yla ecopibt xocu mighjajofw ur I(x rug h).
Solution to Challenge 2
[21, 10, 18, 5, 3, 100, 1]
531011001821531018100121510318100121
320386765758185336553805435461833954
Solution to Challenge 3
Add this as an additional function of Heap.swift:
mutating public func merge(_ heap: Heap) {
elements = elements + heap.elements
buildHeap()
}
Bacwidp fni xeamf am mabv ltxaunwlroqcurw. Die haxsm dikliku ximg emsizb, wbuwd viwec U(j), vlowi g ac ndi hujscv ej yci jiel toi uye tumnazd. Reeydivs vpa waur tugop I(m). Eninehb xbi oqrerunyy benb um I(l).
Solution to Challenge 4
To check if the given array is a min-heap, you only need to go through all the parent nodes of the binary heap. To satisfy the min-heap requirement, every parent node must be less than or equal to its left and right child node.
Fha hayforuxr osi zulben lidjefg ri jvig sxu gacy okj yumky gmajd enlug sun i linuw yesefk invoc.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.