LeetCode解題記錄(11) 盛最多水的容器

2021-10-01 21:59:28 字數 994 閱讀 9262

解題方案

給定n個非負整數a1,a2,…,an,每個數代表座標中的乙個點(i, ai)。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為(i, ai)(i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。

說明:你不能傾斜容器,且 n 的值至少為 2。

圖中垂直線代表輸入陣列 [1,8,6,2,5,4,8,3,7]。在此情況下,容器能夠容納水(表示為藍色部分)的最大值為 49。

輸入:[1,8,6,2,5,4,8,3,7]

輸出:49

陣列題,面積由兩部分決定,乙個是寬度,乙個是高度,而高度又由兩個高度的最小值決定。要求找到最大面積。

很容易想到將所有情況遍歷一邊,從前向後遍歷有: n(n

−1)/

2n(n-1)/2

n(n−1)

/2種情況,因此時間複雜度為o(n

2)o(n^2)

o(n2)。

這道題可以使用雙指標法解決,由於矩形面積由兩部分決定:最短的高度和寬度,因此在游標向內移動時,應選擇高度較低的游標進行移動,這是因為,如果較高的移動,只可能使得面積縮小(高度減小,寬度減小),然而較低的移動雖然寬度會減小,但是高度可能增加,這樣面積就可能增加。

最後加以判斷即可。

所有**都可以在我的github上找到:leetcode

LeetCode解題記錄(5)

我將慢慢開始做leetcode上的題,並做解題記錄發布在這裡。我每題會給出一到多個解法,記錄思考過程。我演算法巨爛,是想通過這種方式稍微補補,基本功和我一樣差的小夥伴可以和我一起共勉,有大神路過可以指點一二,我感激不盡。解題的最底要求是能通過leetcode的檢測,我不會喪病的為了各種提高效率在乙個...

leetcode解題記錄(二)

問題描述 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例1 輸入 flower flow flight 輸出 fl 示例2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 思路 首先找出陣列中長度最短的字串...

LeetCode解題記錄(7) 整數反轉

解題方案 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。輸入 123 輸出 321 輸入 123 輸出 321 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數溢位那麼就返回...