Q:
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.
Note: You may not slant the container and n is at least 2.
The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.
Example:
Input: [1,8,6,2,5,4,8,3,7] Output: 49
A:
JAVASCRIPT(简单地想了一个log(n^2)的方法,还有很大的优化区间,明天java补)
/** * @param {number[]} height * @return {number} */ var maxArea = function(numArr) { var h = '', w = '', tmp = 0, max = 0; for (var m = 0; m < numArr.length - 1; m++) { for (var n = m + 1; n < numArr.length; n++) { h = Math.min(numArr[m], numArr[n]); w = n - m; tmp = h * w; if (max < tmp) { max = tmp; } } } return max; };