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

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

567. 992. | 滑動窗口題型

2020-04-25 15:30 作者:有木乘舟  | 我要投稿


分析:

? 比較典型的判斷一個字符串是否是另一個字符串的子串的問題。

? 這題最直接的思路就是移動窗口,每移動一次對窗口內(nèi)的字符串進(jìn)行判斷,是否是第一個字符串的排列。

? 我們使用兩個哈希表存儲字符串s1和s2的窗口,每次只要比較兩個哈希表是否相等即可。

? 注意,題目并沒有說s1一定小于等于s2,所以我們需要有一個判斷 s1 > s2?,是的話直接返回false。

567.代碼

分析:

? 題目求的是數(shù)組中滿足不同整數(shù)為K個的連續(xù)子數(shù)組的個數(shù)。

? 可見,窗口大小為K到A.size(),最直接的解法也就是暴力解法,我們從窗口K開始,K=A.size()結(jié)束,依次遍歷整個數(shù)組,計(jì)算全部子數(shù)組是否符合條件。

? 暴力解法超時的原因大多數(shù)都是因?yàn)榇罅恐貜?fù)計(jì)算,所以我們優(yōu)化的方向就是盡可能的將重復(fù)的部分給剔除掉。

? 我們觀察發(fā)現(xiàn),如果先將right指針向右移動,然后再將left指針右移,依次對當(dāng)前窗口K里面的子數(shù)組進(jìn)行遍歷計(jì)算,會大大的減少重復(fù)計(jì)算量。

? 總結(jié)歸納為以下兩個要點(diǎn):

  • 對當(dāng)前窗口,若新加入元素后,不重復(fù)數(shù)字大于K,則縮小窗口大小,即 left++,right不變

  • 對當(dāng)前窗口,若新加入元素后,不重復(fù)數(shù)字等于K,則計(jì)算當(dāng)前窗口好子數(shù)組的數(shù)量,并在計(jì)算結(jié)束后恢復(fù)窗口數(shù)據(jù)。

? 由于我們每次都是在加入新元素后才計(jì)算,所以不會重復(fù)計(jì)算之前已經(jīng)算過的好子數(shù)組數(shù)量,這樣可以大大減少計(jì)算量,將時間復(fù)雜度降低。

? 圖解:

? 注意,我們在移動計(jì)算好子數(shù)組的時候,哈希表只是作為臨時計(jì)算用的,在計(jì)算完之后一定要恢復(fù)數(shù)據(jù)。

? ? 最后膜拜一下大神的解法:


567. 992. | 滑動窗口題型的評論 (共 條)

分享到微博請遵守國家法律
合水县| 巴塘县| 瓦房店市| 同江市| 南充市| 三门峡市| 乐陵市| 苏尼特右旗| 贵德县| 苍梧县| 仲巴县| 闸北区| 黔西| 青田县| 手机| 陇西县| 天等县| 平凉市| 乳山市| 大关县| 太和县| 开江县| 榆树市| 和田县| 利津县| 蕉岭县| 刚察县| 集安市| 新河县| 蒙自县| 宁晋县| 永德县| 肥乡县| 万宁市| 大姚县| 台北县| 青龙| 佛教| 荔波县| 平昌县| 红河县|