11. Container With Most Water(补上周忘记的那份)

来源:互联网 发布:怎样在手机淘宝上评价 编辑:程序博客网 时间:2024/06/16 01:10

Description:

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 and n is at least 2.


简要题解:

先明确一点: 本题中不同容器的储水量可以用容器较短的一条垂直边与底的乘积大小来比较。储水量大小与乘积大小正相关。

算法的思路是: 先选定两条垂线,它们对应的容器底最长。很显然,这两条垂线是第一条和最后一条垂线;接下来,我们不管怎么改动两条垂线,底的长度只可能减小。因为,对于容器的两条垂线,容器的大小只受限于较短的那条,所以,如果我们选择替换较长的那条垂线的话,新容器较短那条垂线的长度<=原容器较短那条垂线的长度。再加上底的长度只可能减小,这样,容器的大小只会变的越来越小。因此,我们应该考虑替换容器的较短那条垂线。候选的垂线就是夹在容器两条垂线中间的那些垂线。我们采用最简单的按序遍历方式尝试寻找新的垂线,即左边的边顺序往前找替换的边,或右边的边顺序往后赵替换的边。


代码:

class Solution {public:    int maxArea(vector<int>& height) {        int left = 0, right = height.size() - 1;        int currentMost = 0;        int temp;        while (left < right) {            temp = (right - left) * ((height[left] < height[right]) ? height[left] : height[right]);            if (currentMost < temp)                currentMost = temp;                        if (height[left] < height[right]) {                left++;            } else {                right --;            }        }        return currentMost;    }};


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 呢喃的拼音 呢喃的意思 呢喃读音 呢喃细语 恶魔的呢喃 夜风呢喃 唇间呢喃 小呢喃作品 呢喃山丘 呢喃近义词 呢喃是什么意思 娇经 落雨呢喃 呢喃的近义词 呢喃细语是什么意思 娇经落雨 她甜似美酒 夜风 江鱼舟 凡人再修仙传 呢喃的歌声 她甜似美酒 小呢喃 腹黑总裁宠妻成瘾 古越呢喃 呢子大衣 呢子 呢子外套 呢子衣 呢子褂子 呢子外套女 呢子衣服 女呢子外套 呢子大衣怎么清洗 呢子大衣清洗 呢子大衣搭配图片 呢子大衣可以用洗衣机洗吗 2018流行呢子大衣穿搭图片 呢子大衣图片 呢子大衣蝴蝶结折法慢动作 呢子大衣搭配 呢子大衣品牌 呢子大衣腰带怎么打结图 干洗呢子大衣多少钱 呢子大衣什么品牌好