LeetCode Container With Most Water

本文探讨了一种解决寻找容器最大水量问题的算法。通过分析给定的高度数组,算法在每一步中优化容器的容量,确保在当前位置所能获得的最大容量。通过减少高度较低的边界并重复此过程,最终找到能够容纳最多水的容器。

Container With Most Water

Total Accepted: 52276 Total Submissions: 163550 Difficulty: Medium

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








代码如下:
public class Solution {
    public int maxArea(int[] height) {
		
    	int max = 0;
    	int i = 0;
    	int j = height.length-1;
    	while(i<j){
    		int water = Math.min(height[i],height[j])*(j-i);
    		max = Math.max(max, water);
    		if(height[i]<height[j]){
    			i++;
    		}
    		else{
    			j--;
    		}
    	}
        return max;
    }
}

求解过程类似于快速排序,每移动一步都是较小的height的值得下标移动。从而保证了移动之前的位置上所得到的容量是在该位置可以得到的最大容量。因为此时较大的height是离该位置最远的位置。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值