标签:
题目:
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.
解答:
1、穷举法,两重循环,时间复杂度O(n^2),提交会出现超时错误;
2、两指针中间靠,是一种贪心策略,因为中间靠的过程中,线间隔变小,所以只有如下情况才有可能取更大值:板的高度变的更高。
代码如下:
public int maxArea(int[] height) { int max = 0; int left = 0; int right = height.length - 1; int curArea = 0; while (left < right) { curArea = (right - left) * (height[right] < height[left] ? height[right--] : height[left++]); if (curArea > max) max = curArea; } return max; }
[leetcode]Container With Most Water
标签:
原文地址:http://www.cnblogs.com/shizhh/p/4707280.html