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

一、题目叙述:

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));
    	
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值