LeetCode刷题笔录Container With Most Water
2014-07-08 05:10
302 查看
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.
只想出了O(n^2)的brute force解法。google了一下发现了这么个解法:
start 和end分别指向数组的头和尾。则当前的container的容积为area=min(height[start],height[end])*(end-start)。假设height[start]<height[end],那么无论end取任何一个值,以start为一条边的容器的area不可能比当前的这个area更大。原因是容器的容积是由较短的那条边决定的。因此这是做start++,进行下一次比较。对于height[end]<height[start]的情况同理end--。
..., 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.
只想出了O(n^2)的brute force解法。google了一下发现了这么个解法:
start 和end分别指向数组的头和尾。则当前的container的容积为area=min(height[start],height[end])*(end-start)。假设height[start]<height[end],那么无论end取任何一个值,以start为一条边的容器的area不可能比当前的这个area更大。原因是容器的容积是由较短的那条边决定的。因此这是做start++,进行下一次比较。对于height[end]<height[start]的情况同理end--。
public class Solution { public int maxArea(int[] height) { if(height.length < 2) return 0; int start = 0; int end = height.length - 1; int maxArea = 0; int area; while(start < end){ if(height[start] < height[end]){ area = height[start] * (end - start); start++; } else{ area = height[end] * (end - start); end--; } if(maxArea < area) maxArea = area; } return maxArea; } }
相关文章推荐
- [LeetCode] 最大容器问题 Container with Most Water
- LeetCode(11)——Container With Most Water
- Leetcode 11 Container With Most Water
- [leetcode-11]container with most water(C)
- 最大容积--Container With Most Water of leetcode
- leetcode Container With Most Water
- leetcode:11. Container With Most Water
- leetcode:Container With Most Water 6行AC
- LeetCode--Container With Most Water
- 【Leetcode】Container With Most Water (Water)
- LeetCode - Container With Most Water
- LeetCode11-Container With Most Water
- LeetCode 11_Container With Most Water
- LeetCode Container With Most Water
- LeetCode11:Container With Most Water
- LeetCode-[双指针法]Container With Most Water
- Container With Most Water - LeetCode
- leetcode:11. Container With Most Water
- [Leetcode] Container With Most Water
- LeetCode Container With Most Water 查找容水量最大的容器 动态规划法思想分析