LeetCode 11. Container With Most Water

Given n non-negative integers *a1
*, *a2
*, ..., an
, where each represents a point at coordinate (i
, ai
). n vertical lines are drawn such that the two endpoints of line i is at (i
, ai
) and (i
, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container and n is at least 2.
Subscribe to see which companies asked this question.

題目

給定 n 個(gè)非負(fù)整數(shù) a1, a2, ..., an, 每個(gè)數(shù)代表了坐標(biāo)中的一個(gè)點(diǎn) (i, ai)。畫 n 條垂直線恋拷,使得 i 垂直線的兩個(gè)端點(diǎn)分別為(i, ai)和(i, 0)叹誉。找到兩條線,使得其與 x 軸共同構(gòu)成一個(gè)容器狂窑,以容納最多水走越。
注意事項(xiàng)
容器不可傾斜杏糙。
樣例
給出[1,3,2], 最大的儲(chǔ)水面積是2

分析

用兩根指針一頭一尾,分別計(jì)算面積浆熔,然后選取高度小的那邊向中間移動(dòng)本辐,因?yàn)檫@樣才可能存在更大的面積,更新最大的面積医增,最后就是結(jié)果慎皱。

Paste_Image.png

代碼

public class Solution {
    /**
     * @param heights: an array of integers
     * @return: an integer
     */
    int computeArea(int left, int right,  int[] heights) {
        return (right-left)*Math.min(heights[left], heights[right]);
    }
    
    public int maxArea(int[] heights) {
        //兩根指針,一頭一尾計(jì)算叶骨,短的那根指針向中間移動(dòng)茫多,因?yàn)橹挥羞@種情況才存在更大的情況
        int left = 0, right = heights.length-1;
        int res = 0;
        
        while(left < right) {
            res = Math.max(res, computeArea(left,right,heights));
            if(heights[left] < heights[right]) {
                left++;
                //如果小于則不必要計(jì)算,直接跳過
                while(heights[left] <= heights[left-1] && left<right)
                    left++;
            }
            else {
                right--;
                while(heights[right] <= heights[right+1] && left <right)
                    right--;
            }
        }
        return res; 
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忽刽,一起剝皮案震驚了整個(gè)濱河市天揖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跪帝,老刑警劉巖今膊,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異伞剑,居然都是意外死亡万细,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門纸泄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腰素,你說我怎么就攤上這事聘裁。” “怎么了弓千?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵衡便,是天一觀的道長。 經(jīng)常有香客問我,道長镣陕,這世上最難降的妖魔是什么谴餐? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮呆抑,結(jié)果婚禮上岂嗓,老公的妹妹穿的比我還像新娘。我一直安慰自己鹊碍,他們只是感情好厌殉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侈咕,像睡著了一般公罕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耀销,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天楼眷,我揣著相機(jī)與錄音,去河邊找鬼熊尉。 笑死罐柳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帽揪。 我是一名探鬼主播硝清,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼转晰!你這毒婦竟也來了芦拿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤查邢,失蹤者是張志新(化名)和其女友劉穎蔗崎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扰藕,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缓苛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了邓深。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片未桥。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芥备,靈堂內(nèi)的尸體忽然破棺而出冬耿,到底是詐尸還是另有隱情,我是刑警寧澤萌壳,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布亦镶,位于F島的核電站日月,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏缤骨。R本人自食惡果不足惜爱咬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绊起。 院中可真熱鬧精拟,春花似錦、人聲如沸勒庄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽实蔽。三九已至荡碾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間局装,已是汗流浹背坛吁。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铐尚,地道東北人拨脉。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像宣增,于是被迫代替她去往敵國和親玫膀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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