Container With Most Water
Total Accepted: 52276 Total
Submissions: 163550 Difficulty: Medium
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
代码如下:
public class Solution {
public int maxArea(int[] height) {
int max = 0;
int i = 0;
int j = height.length-1;
while(i<j){
int water = Math.min(height[i],height[j])*(j-i);
max = Math.max(max, water);
if(height[i]<height[j]){
i++;
}
else{
j--;
}
}
return max;
}
}求解过程类似于快速排序,每移动一步都是较小的height的值得下标移动。从而保证了移动之前的位置上所得到的容量是在该位置可以得到的最大容量。因为此时较大的height是离该位置最远的位置。
本文探讨了一种解决寻找容器最大水量问题的算法。通过分析给定的高度数组,算法在每一步中优化容器的容量,确保在当前位置所能获得的最大容量。通过减少高度较低的边界并重复此过程,最终找到能够容纳最多水的容器。
383

被折叠的 条评论
为什么被折叠?



