這里寫目錄標題
- 🚺題目
- 🚺一點點思路
- 🚺開干
- 🚺介紹一種函式
- 🚺原始碼和分析程序
📣小白練手專欄,適合剛入手的新人歡迎訂閱編程小白進階
📣python有趣練手專案,可以讓你快樂學python練手專案專欄📣另外想學JavaWeb進廠的同學可以看看這個專欄:傳送們
📣這是個面試和考研的演算法練習我們一起加油上岸之路
🚺題目
給你 n 個非負整數 a1,a2,…,an,每個數代表坐標中的一個點 (i, ai) ,在坐標內畫 n 條垂直線,垂直線 i
的兩個端點分別為 (i, ai) 和 (i, 0) ,找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水,說明:你不能傾斜容器,
示例 1:

輸入:[1,8,6,2,5,4,8,3,7]
輸出:49
解釋:圖中垂直線代表輸入陣列 [1,8,6,2,5,4,8,3,7],在此情況下,容器能夠容納水(表示為藍色部分)的最大值為 49,
示例 2:
輸入:height = [1,1]
輸出:1
示例 3:
輸入:height = [4,3,2,1,4]
輸出:16
示例 4:
輸入:height = [1,2,1]
輸出:2
提示:
n = height.length
2 <= n <= 3 * 104
0 <= height[i] <= 3 * 104
通過次數497,423提交次數785,189
🚺一點點思路
看到這道題我一下感覺刷題沒白刷啊,想想前幾天我們一起做的《無重復字符的最長子串》我們當時用的是雙指標模擬了滑動視窗機制還記的嗎?不記得沒關系在回頭看看就行了,這道題不知道大家有沒有聽說過短板原理鏈接我想用這個原力來解決問題在每次指標移動的時候我們只要移動短板就好了,來吧我們來看看這次的題解,
🚺開干
🚺介紹一種函式
因為今天所用到的知識和以前很像所以我們就回顧以前的Math函式的知識吧
Math.PI 記錄的圓周率
Math.E 記錄e的常量
Math中還有一些類似的常量,都是一些工程數學常用量,
Math.abs 求絕對值
Math.sin 正弦函式 Math.asin 反正弦函式
Math.cos 余弦函式 Math.acos 反余弦函式
Math.tan 正切函式 Math.atan 反正切函式 Math.atan2 商的反正切函式
Math.toDegrees 弧度轉化為角度 Math.toRadians 角度轉化為弧度
[color=red]Math.ceil 得到不小于某數的最大整數 比它大的數[/color]
[color=red]Math.floor 得到不大于某數的最大整數 比它小的數[/color]
Math.IEEEremainder 求余
Math.max 求兩數中最大
Math.min 求兩數中最小
Math.sqrt 求開方
[color=red]Math.pow 求某數的任意次方, 拋出ArithmeticException處理溢位例外[/color]
Math.exp 求e的任意次方
Math.log10 以10為底的對數
Math.log 自然對數
Math.rint 求距離某數最近的整數(可能比某數大,也可能比它小)
[color=red]Math.round 求距離某數最近的整數,回傳int型或者long型(上一個函式回傳double型)[/color]
Math.random 回傳0,1之間的一個亂數
🚺原始碼和分析程序
根據短板原理我們可以知道這個容器能盛水多少,主要是看這個容器兩邊的高度height[i]&&height[j]其實這里我們還需要注意的是在移動height[i]&&height[j]最小的一個的時候它的底邊長度也會縮小的,
class Solution {
public int maxArea(int[] height) {
//設定i在左邊j在右邊
int i = 0, j = height.length - 1, res = 0;
//當容器兩邊處在同一位置的時候容器的底邊就為零了這個時候就可以終止了
while(i < j){
res = height[i] < height[j] ? Math.max(res, (j - i) * height[i++]): Math.max(res, (j - i) * height[j--]);
}
return res;
}
}
接下來我們再來看看這個
res = height[i] < height[j] ? Math.max(res, (j - i) * height[i++]): Math.max(res, (j - i) * height[j--]);
大家要是分不清i++和++i記得私聊我,或者留言我給你補補,這句代碼的主要意思就是找每個小的height[i]&&height[j]如果小的是height[i]就向右邊移動i++另一邊也是同樣的道理,然后在和原來的數比較如果比原來的res大就換掉,
好了今天的練習就到這里了哦,明天再見,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/294483.html
標籤:python
