Leetcode刷题记——11. Container With Most Water(装最多水的容器)

    xiaoxiao2021-12-10  10

    一、题目叙述:

    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.

    Subscribe to see which companies asked this question

    二、解题思路:

    这个我真的没想出来,头脑简单的用暴力写,显然复杂度到n2了,就超时了,最后也没想出来怎么弄。所以看了别人的做法,结果非常简单,复杂度也就O(N)。基本思路是这样的:在数组前后各放一个指针,计算此时容器的能盛水的量,因为显然此时的矩形长达到了最长,接着将短的一边的指针向前移,向前移时,矩形长已经在缩短了,只要想办法提升宽面积才能增大,由此。。。

    三、源源源码:

    public class Solution { public int maxArea(int[] height) { int min = 0; int max = height.length - 1; int maxarea = 0; int temp = 0; while (min < max) { temp = (max - min) * Math.min(height[min], height[max]); if (temp > maxarea) maxarea = temp; if (height[min] < height[max]) min ++; else max --; } return maxarea; } public static void main(String args[]) { int[] a = {1,1}; Solution solution = new Solution(); System.out.println(solution.maxArea(a)); } }

    转载请注明原文地址: https://ju.6miu.com/read-700318.html

    最新回复(0)