給出乙個整數陣列,堆化操作就是把它變成乙個最小堆陣列。
對於堆陣列a,a[0]是堆的根,並對於每個a[i],a [i * 2 + 1]是a[i]的左兒子並且a[i * 2 + 2]是a[i]的右兒子。
給出[3,2,1,4,5]
,返回[1,2,3,4,5]
或者任何乙個合法的堆陣列
o(n)的時間複雜度完成堆化
什麼是堆?
什麼是堆化?
如果有很多種堆化的結果?
首先將陣列看作是乙個完全二叉樹結構,需要尋找到最後乙個非葉子節點(即最後葉子節點的父節點),從此節點向前遍歷,依次進行siftdown操作
public class solution
}private void siftdown(int a, int k)
}private void swap(int a, int i, int j)
}
兩次過 Lintcode 56 兩數之和
給乙個整數陣列,找到兩個數使得他們的和等於乙個給定的數 target。你需要實現的函式twosum需要返回這兩個數的下標,並且第乙個下標小於第二個下標。注意這裡下標的範圍是 0 到 n 1。example1 給出 numbers 2,7,11,15 target 9,返回 0,1 example2 ...
兩次過 Lintcode 1209 構造矩形
對於乙個web開發者,如何設計頁面大小很重要。所以,給定乙個矩形大小,設計其長 l 寬 w 使其滿足如下要求 1.矩形區域大小需要和給定目標相等。2.寬度w不大於長度l,也即l w.3.長和寬的差異盡可能的小。返回設計好的長度l和寬度w。樣例 輸入 4 輸出 2,2 解釋 目標區域是4,所有可能的構...
兩次過 Lintcode 212 空格替換
設計一種方法,將乙個字串中的所有空格替換成 20。你可以假設該字串有足夠的空間來加入新的字元,且你得到的是 真實的 字元長度。你的程式還需要返回被替換後的字串的長度。對於字串 mr john smith 長度為13 替換空格之後,引數中的字串需要變為 mr 20john 20smith 並且把新長度...