11. Container With Most Water
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.
给定一个长度>2的数组a
,其中有n个点为(i,a[i]),求寻找两个点与x轴的连线组成的区域能装水最多
解题分析:
1.注水最多并不是面积最大,而是最短板决定面积的大小
2.找到两个最短板最大而且两个之间间距最大的就是最大面积
方法一:
常规思路,采取两个for循环,遍历所有面积,取最大值这样的话你的n过大时时间空间复杂度
Time complexity : O(n^2)O(n2). Calculating area for all \frac{n(n-1)}{2}2n(n−1) height pairs.
Space complexity : O(1)O(1). Constant extra space is used.
方法二:
左右两个标记进行循环,一旦当前木板为短板,则向另一侧移动下标寻找更短的板子
public class Solution {
public int maxArea(int[] height) {
int l=0,r=height.length-1,max=0;
while(l
max=Math.max(max,Math.min(height[l],height[r])*(r-l));
if(height[l]>height[r]){
r--;
}
else
l++;
}
return max;
}
}
Time complexity : O(n)O(n). Single pass.
Space complexity : O(1)O(1). Constant space is used.
转载于:https://www.cnblogs.com/haoHaoStudyShare/p/7359964.html
点赞
收藏
分享
文章举报
diaocongdie2176
发布了0 篇原创文章 · 获赞 0 · 访问量 78
私信
关注