leecode11 盛水最多的容器
生活随笔
收集整理的這篇文章主要介紹了
leecode11 盛水最多的容器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定 n 個非負整數 a1,a2,...,an,每個數代表坐標中的一個點?(i,?ai) 。在坐標內畫 n 條垂直線,垂直線 i?的兩個端點分別為?(i,?ai) 和 (i, 0)。找出其中的兩條線,使得它們與?x?軸共同構成的容器可以容納最多的水。
說明:你不能傾斜容器,且?n?的值至少為 2。
思路:兩個指針指向兩端,計算答案,更新最優。
之后短的指針向中間移動,因為所有以短指針為端點的情況都不會超過這個數(之后的情況都是寬度更小,由于短指針的限制,高度不會更高)。
?
public class Solution {public int maxArea(int[] height) {int maxarea = 0, l = 0, r = height.length - 1;while (l < r) {maxarea = Math.max(maxarea, Math.min(height[l], height[r]) * (r - l));if (height[l] < height[r])++l;else--r;}return maxarea;} }總結
以上是生活随笔為你收集整理的leecode11 盛水最多的容器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode206 反转链表
- 下一篇: 尚硅谷李老师笔记3DQL