分治法-數(shù)組最大子序和

https://leetcode-cn.com/problems/maximum-subarray/solution/zui-da-zi-xu-he-by-leetcode-solution/
今日從零開始刷到求數(shù)組中的最大連續(xù)子序和,我的思路是動態(tài)規(guī)劃顶岸,求帶最后一位的最大連續(xù)子序和,最終對比找到最大值辖佣。

官方題解提到了另一種分治法,引申出線段樹的概念
大致思想是 分段遞歸杯拐,求四個關(guān)鍵的參數(shù)進行對比求最大。

首先是數(shù)組的區(qū)間[l,r]端逼,其次取分治的中間點m凸郑,分成兩段[l,m] 和 [m+1,r]
對于一個區(qū)間 [l,r]裳食,我們可以維護四個量:
lSum 表示 [l,r] 內(nèi)以 l 為左端點的最大子段和
rSum 表示 [l,r] 內(nèi)以 r 為右端點的最大子段和
mSum 表示 [l,r] 內(nèi)的最大子段和
iSum 表示 [l,r] 的區(qū)間和

所以問題就變?yōu)檐搅ぃ乙骩l,r]的mSum,那么這個數(shù)據(jù)只有兩種情況而昨,要么是最長子序段不跨m也就是
max { [l,m]的mSum , [m+1,r]的mSum };要么是跨m也就是 [l,m]的rSum + [m+1,r]的lSum着憨。所以最后的實現(xiàn)也就變?yōu)檫f歸务嫡,到最底的[l,l]長度為1甲抖,也就是四個關(guān)鍵參數(shù)都相等時心铃。往上return最后得出[l,r]的四個關(guān)鍵參數(shù),最后比較大小即可去扣。

那么線段樹又是什么?這里官方最后給了段題外話,如下:

題外話
「方法二」相較于「方法一」來說哲戚,時間復(fù)雜度相同艾岂,但是因為使用了遞歸顺少,并且維護了四個信息的結(jié)構(gòu)體澳盐,運行的時間略長,空間復(fù)雜度也不如方法一優(yōu)秀叼耙,而且難以理解。那么這種方法存在的意義是什么呢筛婉?

對于這道題而言,確實是如此的入蛆。但是仔細(xì)觀察「方法二」,它不僅可以解決區(qū)間[0,n?1]哨毁,還可以用于解決任意的子區(qū)間[l,r] 的問題。如果我們把[0,n?1] 分治下去出現(xiàn)的所有子區(qū)間的信息都用堆式存儲的方式記憶化下來扼褪,即建成一顆真正的樹之后粱栖,我們就可以在 O(logn) 的時間內(nèi)求到任意區(qū)間內(nèi)的答案,我們甚至可以修改序列中的值闹究,做一些簡單的維護,之后仍然可以在 O(logn) 的時間內(nèi)求到任意區(qū)間內(nèi)的答案渣淤,對于大規(guī)模查詢的情況下,這種方法的優(yōu)勢便體現(xiàn)了出來价认。這棵樹就是上文提及的一種神奇的數(shù)據(jù)結(jié)構(gòu)——線段樹。

我的理解就是,這樣維護的樹結(jié)構(gòu),所有的查詢都可以用接近一半的時間取獲得答案捶箱,會快于O(n)的動態(tài)規(guī)劃。但是這顆線段樹的節(jié)點新增和刪除都是需要重新計算關(guān)鍵參數(shù)的荠锭,維護起來比較麻煩,只能適用變更少证九,數(shù)值較為固定的場景、或可利用緩存結(jié)構(gòu)提前計算愧怜,可接受一定程度延時性的場景

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妈拌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子尘分,更是在濱河造成了極大的恐慌,老刑警劉巖培愁,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件定续,死亡現(xiàn)場離奇詭異谍咆,居然都是意外死亡香罐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門港粱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人查坪,你說我怎么就攤上這事宁炫〕ナ铮” “怎么了羔巢?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵罩阵,是天一觀的道長启摄。 經(jīng)常有香客問我,道長歉备,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任喧笔,我火速辦了婚禮,結(jié)果婚禮上书闸,老公的妹妹穿的比我還像新娘。我一直安慰自己梗劫,他們只是感情好截碴,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著日丹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哲虾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天晒旅,我揣著相機與錄音,去河邊找鬼废恋。 笑死扒寄,一個胖子當(dāng)著我的面吹牛鱼鼓,可吹牛的內(nèi)容都是我干的该编。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼嘉赎,長吁一口氣:“原來是場噩夢啊……” “哼置媳!你這毒婦竟也來了曹阔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤赃份,失蹤者是張志新(化名)和其女友劉穎奢米,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鬓长,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年英上,在試婚紗的時候發(fā)現(xiàn)自己被綠了啤覆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡窗声,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笨觅,到底是詐尸還是另有隱情,我是刑警寧澤见剩,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站固翰,受9級特大地震影響柒啤,放射性物質(zhì)發(fā)生泄漏倦挂。R本人自食惡果不足惜担巩,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涛癌。 院中可真熱鬧送火,春花似錦先匪、人聲如沸种吸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岸裙。三九已至,卻和暖如春降允,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背剧董。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尉剩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓边涕,卻偏偏與公主長得像褂微,于是被迫代替她去往敵國和親功蜓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容