一、題目原型:
給定 n 個非負(fù)整數(shù) a1扛或,a2,...碘饼,an熙兔,每個數(shù)代表坐標(biāo)中的一個點(diǎn) (i, ai) 。畫 n 條垂直線艾恼,使得垂直線 i 的兩個端點(diǎn)分別為 (i, ai) 和 (i, 0)住涉。找出其中的兩條線,使得它們與 x 軸共同構(gòu)成的容器可以容納最多的水钠绍。
二舆声、題目意思剖析:
實(shí)質(zhì):找最大面積筆記思路
三、解題思路:
func maxArea(_ height: [Int]) -> Int {
guard height.count > 0 else {
return 0
}
var l: Int = 0
var r: Int = height.count - 1
var maxArea = Int.min
while l < r {
// 找出兩個高度之間更小的那個柳爽,找出最大面積
maxArea = max(maxArea, (r - l) * min(height[l], height[r]))
// 如果左邊高度 < 右邊高度纳寂,左邊+1
if height[l] < height[r] {
l = l + 1
}else {
// 反之,右邊-1
r = r - 1
}
}
return maxArea
}
四泻拦、小結(jié)
因?yàn)槿绻叨炔粔颍蜁绯龊雒剑跃托枰腋哪莻€高度争拐。然后乘以他們之間的x距離,就是面積。通過兩個指針l和r架曹,節(jié)省了一半的時(shí)間隘冲。
總提交數(shù)
提交結(jié)果