leetcode第11题 盛水最多的容器
·
leetcode第十一题 盛水最多的容器
第一种方式:暴力求解 时间复杂度是o(n^2)
- 我觉得和冒泡是有一些类似的,每次娶一个最小的高度,然后乘以底边的长度 对最大值进行记录
class Solution {
public int maxArea(int[] height) {
int max = 0;
for (int i = 0; i < height.length; i++) {
for (int j = i + 1; j < height.length; j++) {
int h = Math.min(height[i], height[j]);
if (h * (j - i) > max) {
max = h * (j - i);
}
}
}
return max;
}
}
第二种方式(双指针对数组进行遍历)
虽然也是暴力递归 但是这种时间复杂度就小了很多
class Solution {
public int maxArea(int[] height) {
//暴力递归 循环遍历就好了
int maxarea = 0,l = 0,r = height.length -1;
while(l < r){
maxarea = Math.max(maxarea, Math.min(height[l],height[r]) * (r - l));
if (height[l] < height[r])
l++;
else
r--;
}
return maxarea;
}
}
更多推荐
所有评论(0)