給出乙個整數陣列,寫乙個函式將陣列堆化。堆化操作就是把它變成乙個最小堆陣列。對於堆陣列a,a[0] 是堆的根,並對於每個 a[i],a [i * 2 + 1] 是 a[i] 的左兒子並且 a[i * 2 + 2] 是 a[i] 的右兒子。
說明:什麼是堆?
堆是一種資料結構,它通常有三種方法:push, pop 和 top。其中,「push」 新增新的元素進入堆,「pop」 刪除堆中最小/最大元素,「top」 返回堆中最小/最大元素。
什麼是堆化?
把乙個無序整數陣列變成乙個堆陣列。如果是最小堆,每個元素 a[i],我們將得到 a[i * 2 + 1] >= a[i] 和 a[i * 2 + 2] >= a[i]
如果有很多種堆化的結果?返回其中任何乙個。
格式:
輸入行輸入乙個整數陣列,最後輸出經過堆化後的陣列。
樣例輸入
[ 3,2,1,4,5 ]
樣例輸出
[ 1,2,3,4,5 ]
思路:
演算法愛好者 演算法題 加油站 ? 待解決
在一條環路上有 n 個加油站,其中第 i 個加油站有汽油gas i 並且從第 i 個加油站前往第 i 1 個加油站需要消耗汽油cost i 你有一輛油箱容量無限大的汽車,現在要從某乙個加油站出發繞環路一周,一開始油箱為空。寫乙個函式求可環繞環路一周時出發的加油站的編號,若不存在環繞一周的方案,則返回...
演算法愛好者 陣列中最大的差值 ? 待解決
給 m 個陣列,每乙個陣列均為公升序,現在你可以從兩個不同的陣列中挑選兩個整數 每乙個陣列選乙個 並且計算差值。我們將兩個整數 a 和 b 之間的差定義為它們的絕對差 a b 你的任務是編寫乙個函式去找到不同陣列之間最大的差值。注意事項 1 每乙個給出的陣列長度至少為 1,至少有兩個不為空的陣列。2...
演算法題一堆
演算法題 說明 這些題就不是什麼花樣了,考的是你的基礎知識怎麼樣。再聰明而沒有實學的人都將會被這些題所淘汰。1.鍊錶和陣列的區別在 2.編寫實現鍊錶排序的一種演算法。說明為什麼你會選擇用這樣的方法?3.編寫實現陣列排序的一種演算法。說明為什麼你會選擇用這樣的方法?4.請編寫能直接實現strstr 函...