[Leetcode] 11 Container With Most Water
2015-09-18 15:22
344 查看
首先,刚看到这道题的时候,我是往动态规划方向去想的,后来构造不出转移方程。所以再次进行思考,想按照三种方式取最大值即:
1)right左移一位
2)Left右移一位
3)Right左移一位,left右移一位
三者取最大值,但是不能证明局部最优可以带来全局最优,而且找到了反例。我们试想如果为了局部最优而导致左右均接近一位的话,有可能错过一个最大高度。那么我们如何才能不错过最大高度呢?
只需要我们每次将高度较低的那一边向里移动,迭代过程中记录最大面积即可。这样可以保证我们不会错过高度,每次移动较低的,是期望遇见更高的。已经是较高的,除非变成较低的才需要寻找,否则保持。
1)right左移一位
2)Left右移一位
3)Right左移一位,left右移一位
三者取最大值,但是不能证明局部最优可以带来全局最优,而且找到了反例。我们试想如果为了局部最优而导致左右均接近一位的话,有可能错过一个最大高度。那么我们如何才能不错过最大高度呢?
只需要我们每次将高度较低的那一边向里移动,迭代过程中记录最大面积即可。这样可以保证我们不会错过高度,每次移动较低的,是期望遇见更高的。已经是较高的,除非变成较低的才需要寻找,否则保持。
class Solution { public: int maxArea(vector<int>& height) { int left=0,right=height.size()-1; int ans=0,temp; while(left<right) { temp=(min(height[left],height[right])*(right-left)); ans=max(ans,temp); if(height[left]>height[right]) right--; else left++; } return ans; } };
相关文章推荐
- Codeforces Round #319 (Div. 1)E.Painting Edges(并查集)
- Contains Duplicate II
- HDU 4819 Mosaic D区段树
- Contains Duplicate
- 添加第三方类库造成的linker command failed with exit code 1 (use -v to see invocation)的错误调试
- Magic Pairs - SGU 119(同余)
- 升级xcode7之后,真机调试出现BaiduMapAPI.framework/BaiduMapAPI(BMAddrList.o)' does n 4000 ot contain bitcode的问题
- INSTALL_FAILED_DUPLICATE_PERMISSION
- Contains Duplicate 重复数的判断
- 端口状态说明 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT
- SSH 错误解决案例1:Read from socket failed: Connection reset by peer
- grails Tags
- grails自定义标签
- grails检索mongodb
- 中国是大数据的人工智能的发源地
- codis扩容报错:[error] READONLY You can't write against a read only slave
- Error:(27, 42) 错误: <匿名com.jeff.networktest.MainActivity$1>不是抽象的, 并且未覆盖Handler中的抽象方法publish(LogRecord
- 纪念人工智能(AI)奠基60周年
- Contains Duplicate III
- Contains Duplicate III