1. 程式人生 > >盛水最大量---貪心演算法

盛水最大量---貪心演算法

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 left = 0, right = height.length - 1, maxArea = 0;
        while(left < right){
            // 每次更新最大面積(盛水量)
            maxArea = Math.max(maxArea,(right-left)* Math.min(height[left], height[right]));
            // 如果左邊較低,則將左邊向中間移一點
            if(height[left] < height[right]){
                left++;
            // 如果右邊較低,則將右邊向中間移一點
            } else {
                right--;
            }
        }
        return maxArea;
    }
}