Leetcode 盛最多水的容器
阿新 • • 發佈:2020-10-05
給你 n 個非負整數 a1,a2,...,an,每個數代表座標中的一個點(i,ai) 。在座標內畫 n 條垂直線,垂直線 i的兩個端點分別為(i,ai) 和 (i, 0)。找出其中的兩條線,使得它們與x軸共同構成的容器可以容納最多的水。
說明:你不能傾斜容器,且n的值至少為 2。
題解:簡單動態規劃,底越寬越大,高越高越大。取兩個指標分別指向陣列的首和尾,比較大小,較小的一個向內移動,遍歷完之後的最大值就是結果。
class Solution { public: int maxArea(vector<int>& height) { int l = 0, r = height.size()-1; int ans = 0; while(l < r){ int temp = min(height[l],height[r])*(r-l); if(temp>ans){ ans = temp; }else{ if(height[l] <= height[r]){ l++; }else{ r--; } } } return ans; } };