查看: 1159| 回复: 4
跳转到指定楼层
上一主题 下一主题
收起左侧

[数组] [讨论leetcode 11]最多水的容器Container With Most Water

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x


我自己只想到O(n2) solution, 没有想到更高效的,看了下别人的答案,甚是巧妙。自己也实现了一下,就是不断更新矩形start,end的值.附上ac code
  1. class Solution {
  2. public:
  3.     int maxArea(vector<int>& height) {
  4.         int start = 0, end = height.size() - 1;
  5.         int maxArea = 0;
  6.         while(start < end)
  7.         {
  8.             int h = min(height[start], height[end]);
  9.             int cur = (end - start)*h;
  10.             maxArea = max(maxArea, cur);
  11.             if(h == height[start])start++;
  12.             else end--;
  13.         }
  14.         return maxArea;
  15.     }
  16. };
复制代码



我的疑问在于:它没有特殊讨论height[start] == height[end]情况下,start还是end move. 而且start或end move下来的结果肯定是不一样的而且后续的矩形也会跟着不同,但是这版code还是ac了,没想通为什么。求大神提点!!


上一篇:design twitter leetcode大神求帮助
下一篇:判断点是不是在区域内
🔗
waterfish 2019-6-4 04:37:54 | 只看该作者
全局:
你这样考虑:

现在H=height[start]==height[end],他的跨度是end-start。
对于之后的,不管是先移动start还是end,下一个的高度肯定小于等于当前的高度H,但是宽度一定比当前的宽度小,所以移动谁都不影响结果。
回复

使用道具 举报

🔗
 楼主| plugin1689 2019-6-4 11:46:46 | 只看该作者
全局:
waterfish 发表于 2019-6-4 04:37
你这样考虑:

现在H=height[start]==height[end],他的跨度是end-start。


1.宽度一定比之前的宽度小,没有问题;
2.移动之后的高度height[++start]或者height[--end]是有可能比之前大的,但是此时无论++start或者--end的面积都一定比之前小,没有问题;但是再进一步就不一定了,不知道我有没有说清楚
回复

使用道具 举报

🔗
waterfish 2019-6-4 13:01:00 | 只看该作者
全局:
plugin1689 发表于 2019-6-4 11:46
1.宽度一定比之前的宽度小,没有问题;
2.移动之后的高度height[++start]或者height[--end]是有可能比 ...

对,没错,但是height[++start]与任何的height[start+2~end]或者height[--end]与任何的height[start~end-2]的高度一定小于等于height[++start]和height[--end],也就是这两个点start+1和end-1永远都不会被用作最优解了。所以先移动谁都没关系。

评分

参与人数 1大米 +2 收起 理由
plugin1689 + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
 楼主| plugin1689 2019-6-4 13:16:59 | 只看该作者
全局:
waterfish 发表于 2019-6-4 13:01
对,没错,但是height[++start]与任何的height[start+2~end]或者height[--end]与任何的height[start~end- ...


懂你的意思了,无论++start还是--end,最优解都不会出现在这两个点上,也就是说最优解存在于是开区间(start, end), 所以无论是[start, end), 还是(start, end] 都是没有影响的。牛逼啊!!感谢大佬!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表