letecode 程式設計學習(11)

2021-10-25 10:55:16 字數 764 閱讀 7394

題目

假設有打亂順序的一群人站成乙個佇列。 每個人由乙個整數對 (h, k) 表示,其中 h 是這個人的身高,k 是應該排在這個人前面且身高大於或等於 h 的人數。 例如:[5,2] 表示前面應該有 2 個身高大於等於 5 的人,而 [5,0] 表示前面不應該存在身高大於等於 5 的人。

編寫乙個演算法,根據每個人的身高 h 重建這個佇列,使之滿足每個整數對 (h, k) 中對人數 k 的要求。

示例:輸入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

輸出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

解題思路

(1)將整個陣列按照身高從高到低,身高相同時,k小的排在前面。

(2)建立乙個空的陣列,依次根據每乙個整數對中的k作為插入的索引,將整數對插入陣列中。

源**

class solution 

else if (x[0] == y[0])

else

});for (int i = 0; i < people.size(); i++)

else

}return res;

}};

後續改進點:由於vector的插入比較耗時, 可以考慮改用list的方式這樣整體的時間複雜度為o(n*log(n) + n)

vector insert 的原始碼為: 

letecode 程式設計學習(4)

題目 給定乙個整數陣列和乙個區間,計算有多少連續子陣列的和在區間範圍內 例如 陣列 3,0,5,2,2 區間為 1,3 則輸出的子陣列有 3 2,2 3,0 3,0,5,2,2 這5種,輸出為5。include include include include includestruct treeno...

letecode 程式設計學習(7)

題目奇偶鍊錶 給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1 2 3 4 ...

letecode 程式設計學習(12)

題目 在一條環路上有 n 個加油站,其中第 i 個加油站有汽油 gas i 公升。你有一輛油箱容量無限的的汽車,從第 i 個加油站開往第 i 1 個加油站需要消耗汽油 cost i 公升。你從其中的乙個加油站出發,開始時油箱為空。如果你可以繞環路行駛一周,則返回出發時加油站的編號,否則返回 1。說明...