給定 n 個非負整數(shù) a1峭弟,a2,...脱拼,an瞒瘸,每個數(shù)代表坐標中的一個點 (i, ai) 。在坐標內畫 n 條垂直線熄浓,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)情臭。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水赌蔑。
說明:你不能傾斜容器俯在,且 n 的值至少為 2。
image
圖中垂直線代表輸入數(shù)組 [1,8,6,2,5,4,8,3,7]娃惯。在此情況下跷乐,容器能夠容納水(表示為藍色部分)的最大值為 49。
示例:
輸入: [1,8,6,2,5,4,8,3,7]
輸出: 49
首先是最簡單粗暴的思路:2個 for 循環(huán)暴力求解趾浅,
復雜度分析:
時間復雜度:O(n^2)愕提,遍歷所有高度組合的面積。
空間復雜度:O(1)皿哨,使用恒定的額外空間浅侨。
第一次超時了
整理一下思路证膨,其實我們沒必要全部循環(huán)一遍仗颈,考錄到面積取決于短邊,如果左指針是短邊椎例,l就是左指針,并向右移请祖,如果右指針是短邊订歪,就移動 r左移動。并不斷維護最大值肆捕。掃一遍就夠刷晋。
時間復雜度:o(n)
空間復雜度:O(1),使用恒定的額外空間。
image.png