leetcode - 11. 盛最多水的容器

题目描述

基本思路
假设有两个坐标点(i, ai)(j, aj),且j > iaj > ai
另有坐标点(k, ak)i < k < j。坐标点i和坐标点j形成的容器容积比坐标点 i 和坐标点 k 形成的容器容积大。
如果 ai > ak,宽度变小,高度也变小(容积取决于较小边),容积变小;
如果 ai < ak,宽度变小,高度不变,容积变小。
所以,可以使用首尾指针,移动首尾指针中高度小的。

int maxArea(vector<int>& height) {
	int head = 0;
	int tail = height.size() - 1;
	
	int max = 0;
	while (tail > head)
	{
	    if (height[head] < height[tail])
	    {
	        if (height[head] * (tail - head) > max)
	            max = height[head] * (tail - head);
	
	        head++;
	    }
	    else
	    {
	        if (height[tail] * (tail - head) > max)
	            max = height[tail] * (tail - head);
	
	        tail--;
	    }
	}
	
	return max;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值