LeetCode Container With Most Water

来源:互联网 发布:2017网络上很火的神曲 编辑:程序博客网 时间:2024/04/30 14:28

Container With Most Water

Total Accepted: 52276 Total Submissions: 163550 Difficulty: Medium

Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) 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是离该位置最远的位置。








0 0
原创粉丝点击