[leetcode]11. Container With Most Water

来源:互联网 发布:巨星知我心 by凌豹姿 编辑:程序博客网 时间:2024/05/24 02:37

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.

解题思路:设置两个指针,起点分别为数组的头尾。当前的容量就是两个指针间的距离乘以两个之间较小的一个(木桶效应)。然后比较这两个指针对应的数,较小的一方向中间移动(无论谁向中间移动距离都会减小,所以舍弃小的那个)。

java代码

public class Solution {    public int maxArea(int[] height) {        int length = height.length;        int left = 0;        int right = height.length - 1;        int max = 0;        while(left < length && right > 0 && left < right){            int tmp = min(height[left], height[right]) * (right - left);            if(tmp > max){                max = tmp;            }            if(height[left] < height[right]){                left++;            }            else{                right--;            }        }        return max;    }    public int min(int a, int b){        return a > b ? b : a;    }}

c代码

int maxArea(int* height, int heightSize) {        int left = 0, right = heightSize - 1;    int max = 0;    while(left < right){        int tmp = 0;        if(height[left] < height[right]){            tmp = (right - left) * height[left];            left++;        }        else{            tmp = (right - left) * height[right];            right --;        }        max = max < tmp ? tmp : max;    }    return max;}


go代码

func maxArea(height []int) int {    var left int = 0    var right int = len(height)-1    var max=0    for{        if left>right{            break        }        var tmpHeight int        if height[left]>height[right]{            tmpHeight = height[right]        }else{            tmpHeight = height[left]        }        if max < (tmpHeight*(right-left)){            max=(tmpHeight*(right-left))        }        if height[left]>height[right]{            right--        }else{            left++        }            }    return max}



0 0
原创粉丝点击