盛最多水的容器(雙指標)

2021-10-09 21:48:11 字數 677 閱讀 6309

今天在leetcode上刷了一道題用到了雙指標,現在把這種精妙的解法記錄下來

題目傳送門

題目的大意就是要找到乙個最大的min(s[i], s[j])*(j-i),那麼這時候我是一點思路都沒,然後題解指出了乙個雙指標的做法,我們先討論這個東西的合理性,初始情況,將i,j放到陣列的開始和結尾,此時,我們能拿到乙個面積,這個面積的計算公式是:

min

(s[left]

, s[right])*

(right-left)

那麼,接下來怎麼做呢,不妨假設一邊不動,挪動另一邊的下標,如果改變left的下標,不妨看出,此時(right-left)減小,新得到的s[left],有以下的情況

class

solution

int min = height[left]

<= height[right]

? height[left]

: height[right]

;int now =

(right-left)

* min;

if(ans < now)

if(height[left]

< height[right]

)else

}return ans;

}}

11 盛最多水的容器(雙指標)

解法1 二重迴圈,遍歷陣列,列舉出所有容器可能的容積,比較哪乙個容積最大。class solution return max 解法2 雙指標解法,一次遍歷,雙指標一頭一尾開始移動,根據題意,所指向元素小的指標每次移動乙個位置。因為容納的水量是由兩個指標指向的數字中較小值 指標之間的距離決定的。如果我...

11 盛最多水的容器 雙指標

左右指標 ans 0while l r 左右指標指向同乙個元素的時候退出迴圈 area min height l height r r l 面積 最短擋板 間距 ans max ans,area 答案只想要最大的面積 if height l height r 左擋板 小於 右擋板 l 1 左指標移動...

11 盛最多水的容器(雙指標法)

container with most water 題目描述 給你 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜...