五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

280. 239. 滑動窗口中位數(shù)/最大值 | 滑動窗口系列

2020-04-23 12:11 作者:有木乘舟  | 我要投稿


分析:

? 這題最直觀的解法,就是在數(shù)組中對窗口內(nèi)的數(shù)字進行排序,然后計算中位數(shù):

最直觀的暴力解法

? 但是,暴力解法永遠面臨的一個問題就是時間復(fù)雜度過大,因此我們就需要針對窗口的刪除、添加元素和排序進行優(yōu)化。

? 首先肯定不能在窗口移動的時候進行排序,這樣會浪費大量的時間,因此我們先在循環(huán)外部排好序,然后在每次窗口移動的時候,移除最左邊的元素,往最右邊添加一個元素。接著,對添加進來的元素進行排序,使窗口數(shù)組仍然有序。

? 因為vector已經(jīng)是有序數(shù)組,所以不能直接刪除第一個元素,而是要找到與nums[left]相同的那個元素,left指向的元素才是窗口最左邊的元素。這里可以用二分查找法來找到這個元素,然后刪除。

? 刪除掉窗口最左邊元素后,我們將新的元素添加進窗口,同時使窗口數(shù)組保持有序。這里可以直接用插入排序來插入新元素。在這題中,因為只需要插入一個元素,所以插入排序是優(yōu)于快速排序的。

? 注意:

  1. 這里有個編譯器上的坑,在vsCode等本地編譯器上,當vector.size()=0的時候,調(diào)用vector.back()還是會返回一個數(shù)字,但是在力扣中國的編譯器上,會提示錯誤,因此我們需要加入一個條件,判斷當窗口為空的時候,直接添加元素。

? 除此之外,官方給出的標準答案是使用雙堆來解題,以及c++獨有的STL容器中的多重集合。

參考答案:

https://leetcode-cn.com/problems/sliding-window-median/solution/hua-dong-chuang-kou-zhong-wei-shu-by-leetcode/

? 這題和280是一樣的,只需要把判斷條件換成取最大值即可,即 res.push_back(window.back());

? 不過題目有個額外要求,就是看能不能把時間復(fù)雜度降到O(N), 我們之前的方法復(fù)雜度至少是O(NlogN),要降到O(N)一般都是使用動態(tài)規(guī)劃來解答。

280. 239. 滑動窗口中位數(shù)/最大值 | 滑動窗口系列的評論 (共 條)

分享到微博請遵守國家法律
贵港市| 泰来县| 新邵县| 苏尼特左旗| 共和县| 汨罗市| 日照市| 滕州市| 平南县| 顺平县| 安化县| 莆田市| 行唐县| 陆良县| 孝感市| 特克斯县| 郁南县| 舟山市| 资阳市| 永康市| 济南市| 邵武市| 长乐市| 宁安市| 张家口市| 文山县| 额济纳旗| 合阳县| 卢湾区| 磴口县| 涟源市| 石河子市| 星子县| 同江市| 嘉定区| 航空| 商河县| 抚州市| 台中市| 祥云县| 阿荣旗|