LeetCode題解No11 「盛水最多的容器」

2022-08-16 03:36:14 字數 1009 閱讀 8970

/*

給你 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

第一次看到題目沒什麼特別的想法,後面看到官方題解的雙指標恍然大悟,這題用雙指標做會非常簡單。首先用left和right去維護兩個邊界,每移動一次,更新max的值,到最後返回max即可。每次移動,都是移動最短邊的邊界。

public class no11 ;

int ans = maxarea(nums);

system.out.println(ans);

}public static int maxarea(int height)

// 雙指標做法

int left = 0;

int right = n - 1;

// 用於維護最大值

int max = 0;

// 開始迴圈,退出迴圈條件——left == right

while (left != right)else

}return max;}}

暫無

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

輸出:49

程式設計實踐筆記No 11

題目二141 環形鍊錶 題目三142 環形鍊錶 ii 寫在最前面,程式設計一直是我的短板,希望在leetcode練習中獲得進步!參考datawhale組隊學習中 leetcodetencent 鏈結 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素...

No 11 預設實參的匹配

注意 程式語言只是我們與計算機交流並讓計算機實現我們創造性思想的工具,可以並鼓勵深入掌握一門語言,但千萬別沉迷於鑽某種語言的牛角尖,一定要把握好二者間的度 本帖屬不定時 貼,以試卷的形式提出乙個比較基礎的問題供大家思考討論,問題的解析將在下一更新貼中一併給出,這樣做是希望還不清楚問題的朋友有自己思考...

leetcode11 盛最多的水

題意 給出乙個陣列表示乙個容器,陣列中的每個數字表示容器中每個柱子的高度,每兩根柱子中的間距為1,問該容器最大的盛水量。思路1 暴力法 最簡單的思路就是暴力遍歷,乙個迴圈從頭到尾,乙個迴圈從尾到上乙個迴圈指向的位置,計算每兩根柱子之間的盛水量,將最大的盛水量返回。public int maxarea...