Passion and Patience

Work Hard, Play Hard

导航

Leecode 盛最多的水

Day 6 刷题

我的思路:利用两层循环,暴力搜索所有组合的面积,找出最大值。
import java.util.*;

class Solution {
    public int maxArea(int[] height) {

        // 找height和间距
        int maxArea = 0, iArea;

        for (int p1 = 0; p1< height.length-1; p1++){

            int p2 = p1 + 1;
            iArea = Math.min(height[p1],height[p2]);

            // 当新容器面积更大或是指针超出范围
            while (p2 < height.length){

                
                iArea = (p2-p1)*Math.min(height[p1],height[p2++]);
                maxArea = maxArea>iArea?maxArea:iArea;

            }

        }

        return maxArea;

    }

}

Krahets优雅的做法:找短板,短板内移不会带来面积增大。

class Solution {
    public int maxArea(int[] height) {
        int i = 0, j = height.length - 1, res = 0;
        while(i < j) {
            res = height[i] < height[j] ? 
                Math.max(res, (j - i) * height[i++]): 
                Math.max(res, (j - i) * height[j--]); 
        }
        return res;
    }
}

posted on 2024-03-20 14:32  安静的聆  阅读(3)  评论(0编辑  收藏  举报