leetcode--container_with_most_water
2016-10-24 12:38
309 查看
leetcode–container_with_most_water
题意:给定n个非负整数a1,a2,…,an,其中每个表示在坐标(i,ai)的一个点。 有n条垂直绘制的线,使得线的两个端点i是在(i,ai)和(i,0)。找到两条线,其与X轴一起形成了一个容器,使得所述容器包含最多的水。分析:本题比较简单,采用动态规划方法求解,递推公式为x(i)=max(x(i−1),max(min(aj,ai)∗(i−j))(0≤j<i),x(i) 表示前i个line能包含最多的水,该递推式时间复杂度是O(n2) 。(好像还有更简单的方法,我也没仔细想)
代码:用的迭代而非递归(怕栈溢出)
public int maxArea(int[] height){ int length = height.length; if(length == 0){ //如果height没有值,返回面积最大为0 return 0; }else if(length == 1){ //如果height只有一个值,返回最大面积为0 return 0; }else{ //如果height有两个及以上的值 int result_max = Math.min(height[0], height[1]); //最终返回的结果 for(int i=2; i < length; i++){ int temp_max = 0; //用于保存嵌套循环中的最大值 for(int j = 0; j < i; j++){ int temp = Math.min(height[j], height[i])*(i - j); if(temp > temp_max){ temp_max = temp; } } if(temp_max > result_max){ result_max = temp_max; } } return result_max; } }
源程序下载
相关文章推荐
- LeetCode Solutions : Container With Most Water
- LeetCode 11 Container With Most Water
- Container With Most Water - LeetCode
- 【LeetCode】Container With Most Water
- 4.20 leetcode -20 container-with-most-water
- LeetCode 11_Container With Most Water
- leetcode[11]Container With Most Water
- leetcode-Container With Most Water
- LeetCode--Container With Most Water
- LeetCode-11~Container with Most Water
- LeetCode: Container With Most Water
- 【LeetCode】Container with Most Water
- LeetCode Container With Most Water
- LeetCode算法题——Container With Most Water
- Leetcode 11 Container With Most Water
- [Leetcode] Container With Most Water
- LeetCode 11 Container With Most Water
- LeetCode.ZigZag Conversion ,Container With Most Water
- leetcode 11 -- Container With Most Water
- [LeetCode] Container With Most Water