53. 最大子序和

題目

解析

參考leetcode-最大子序和(四種)

第一種解法——暴力枚舉法 O(N^3)

從左往右依次找出所有的子序列并計(jì)算其每個(gè)子序列的和,最后返回最大的

    //暴力破解O(N^3)
    public int maxSubArray(int[] nums) {
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < nums.length; i++) {// 子序列左端點(diǎn)
            for (int j = i; j < nums.length; j++) {// 子序列右端點(diǎn)
                int sum = 0;
                for (int k = i; k <= j; k++) {//暴力計(jì)算
                    sum += nums[k];
                }
                if (max < sum) {
                    max = sum;
                }
            }
        }
        return max;
    }

第二種解法——改進(jìn)的暴力枚舉法 O(N^2)

在第一種解法的過程中波桩,事實(shí)上我們是在找到子序列之后再進(jìn)行計(jì)算的建丧,其實(shí)完全可以邊找邊計(jì)算塞俱,這樣就可以減少一層循環(huán)了

    //暴力破解改進(jìn)O(N^2)
    public int maxSubArray(int[] nums) {
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < nums.length; i++) {// 子序列左端點(diǎn)
            int sum = 0;
            for (int j = i; j < nums.length; j++) {// 子序列右端點(diǎn)
                sum += nums[j];//這一步相當(dāng)于每次根據(jù)前一次的序列來計(jì)算新的序列和
                if (max < sum)
                    max = sum;
            }
        }
        return max;
    }

第三種——掃描法 O(N)

基本思想:當(dāng)我們加上一個(gè)正數(shù)時(shí)贿衍,和會(huì)增加;當(dāng)我們加上一個(gè)負(fù)數(shù)時(shí)澜驮,和會(huì)減少澜术。如果當(dāng)前得到的序列和是一個(gè)負(fù)數(shù)艺蝴,那么下一個(gè)數(shù)無論正負(fù)加上該序列都會(huì)減小,所以這個(gè)序列和應(yīng)當(dāng)在接下來的累加中被拋棄

    //掃描法
    /**
     * curSum 表示當(dāng)前執(zhí)行過程中的和鸟废,
     * 如果當(dāng)前序列執(zhí)行過程的和小于0猜敢,說明再往后加只會(huì)減小當(dāng)前序列和,此時(shí)curSum應(yīng)該轉(zhuǎn)變?yōu)閚ums[i],然后開始計(jì)算新的序列和
     */
    public int maxSubArray(int[] nums) {
        int curSum = nums[0];
        int max = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if (curSum < 0)
                curSum = nums[i];
            else
                curSum += nums[i];
            if (curSum > max)
                max = curSum;
        }
        return max;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盒延,一起剝皮案震驚了整個(gè)濱河市缩擂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌添寺,老刑警劉巖胯盯,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異计露,居然都是意外死亡博脑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門票罐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叉趣,“玉大人,你說我怎么就攤上這事该押×粕迹” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵沈善,是天一觀的道長乡数。 經(jīng)常有香客問我椭蹄,道長闻牡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任绳矩,我火速辦了婚禮罩润,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翼馆。我一直安慰自己割以,他們只是感情好金度,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著严沥,像睡著了一般猜极。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上消玄,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天跟伏,我揣著相機(jī)與錄音,去河邊找鬼翩瓜。 笑死受扳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兔跌。 我是一名探鬼主播勘高,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼坟桅!你這毒婦竟也來了华望?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤仅乓,失蹤者是張志新(化名)和其女友劉穎立美,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體方灾,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡建蹄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裕偿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洞慎。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嘿棘,靈堂內(nèi)的尸體忽然破棺而出劲腿,到底是詐尸還是另有隱情,我是刑警寧澤鸟妙,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布焦人,位于F島的核電站,受9級特大地震影響重父,放射性物質(zhì)發(fā)生泄漏花椭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一房午、第九天 我趴在偏房一處隱蔽的房頂上張望矿辽。 院中可真熱鬧泳赋,春花似錦挽铁、人聲如沸钞钙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宾娜。三九已至批狐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間前塔,已是汗流浹背贾陷。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嘱根,地道東北人髓废。 一個(gè)月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像该抒,于是被迫代替她去往敵國和親慌洪。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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