五月天青色头像情侣网名,国产亚洲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ù)/最大值 | 滑動窗口系列的評論 (共 條)

分享到微博請遵守國家法律
太谷县| 平顺县| 海宁市| 集贤县| 鄂州市| 平昌县| 临潭县| 宜宾县| 炎陵县| 汾西县| 府谷县| 孟村| 榆社县| 定日县| 黔南| 萨迦县| 电白县| 深泽县| 久治县| 册亨县| 襄垣县| 方城县| 桃园县| 湖州市| 兴和县| 读书| 巨野县| 三原县| 武鸣县| 金川县| 邵东县| 丁青县| 镇原县| 汪清县| 都昌县| 常熟市| 金寨县| 铁岭市| 鸡东县| 应城市| 剑河县|