leetcode刷題之旅 11 盛最多水的容器

2021-10-24 01:21:46 字數 865 閱讀 2782

題目鏈結

根據圖示可以看出,容積取決於兩個條件,一是容器兩邊中最小邊的長度,二是容器兩邊的距離,即底和高。因此我們需要計算的就是這兩個資料。

因此在程式中我們需要設定的變數有:

根據題目含義,我們需要寫出兩重迴圈,遍歷每一種可能的情況。

public

intmaxarea

(int

height)

}return area;

}

定義變數i,j從頭開始依次對所有可能的情況進行遍歷,這裡要注意j要從i+1開始執行,因為容器的兩端是不能重合的,同時i的迴圈是在陣列的倒數第二個位置,j的迴圈是陣列的最後乙個位置。

容器的底長度可以根據兩個指標的距離差來計算,這裡沒有可以優化的地方,因此我們需要對高度的選擇進行優化。

通過雙指標前後夾逼的方式,只需要一次迴圈,時間複雜度為0(n)。

解題思路:比較兩指標對應的長度,選取長度較短的一段作為高,同時對應的指標需要向其運動方向移動一格(i向右移,j向左移)。

在兩端不斷靠近的過程中,底邊長度不斷減小,而我們容器的判定還需要根據高度來決定,所有需要找到盡量高的邊來彌補底邊減少的帶來的差距。

第一次寫博文,寫得不是很好,如有不足可以來跟我分享意見。

Leetcode刷題 11 盛最多水的容器

示例解題思路 給定 n 個非負整數 a1,a2,an,每個數代表座標中的乙個點 i,ai 在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 i,ai 和 i,0 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。說明 你不能傾斜容器,且 n 的值至少為 2。輸入 1,8,6,...

LeetCode刷題之旅 滑動視窗例題

給定乙個含有n個正整數的陣列和乙個正整數s 找出該陣列中滿足其和 s的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。高階 如果你已經完成了o n 時間複雜度的解法,...

leetcode刷題之旅(day1)

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...