Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.spa
Note: You may not slant the container.code
我以爲這是一個很是tricky的問題,若是你不懂得數學解法的話,這道題基本作不出來(窮舉法會超時)。而你知道了數學解法後,就以爲這道題很簡單。orm
class Solution { public: int maxArea(vector<int>& height) { int n = (int)height.size(); int left = 0; int right = n - 1; int max_volume = 0; while (left < right) { int x_ais = right - left; int y_ais = height[left] < height[right] ? height[left] : height[right]; if (max_volume < x_ais * y_ais) { max_volume = x_ais * y_ais; } if (height[left] < height[right]) { left++; }else{ right--; } } return max_volume; } };