#LeetCode OJ #11 Container With Most Water
来源:互联网 发布:淘宝iuv 编辑:程序博客网 时间:2024/04/28 03:56
https://leetcode.com/problems/container-with-most-water/
暴力O(n^2)肯定是面试会失败的
分治可能O(n^log(n))
但是有O(n)做法
学到的思维方式:看解的性质,然后构造解,遍历所有可能的解,找出最优
假设解的边界分别为left,right
那么有如下性质:
(1)left左边不应该有比left更大的高度left',否则左边界取left'得到的解必然比left大
(2)right右边不能有比right更大的高度right',否则右边界取right得到的解必然比right大
那么写代码怎么利用这个性质?
初始范围就是最左和最右,这个范围一定包含了最优解,我们要做的是把这个范围缩小到最优区间or遍历所有符合性质的区间取最优值。
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>using namespace std;class Solution {public: int maxArea(vector<int>& height) { int ret=0; int left=0,right=height.size()-1; while(left < right){ ret = max(ret, min(height[right],height[left])*(right-left)); if(height[right]>height[left]){ int tmp = left; left++; while(left < right && height[left] <= height[tmp])left++; }else{ int tmp = right; right--; while(right > left && height[right] <= height[tmp])right--; } } return ret; }};int main(){freopen("incon.txt","r",stdin);Solution s;vector<int> v;int t,n;while(cin >> n){for(int i=0;i<n;i++){cin >> t;v.push_back(t);}cout << s.maxArea(v) << endl;}return 0;}
1 0
- #LeetCode OJ #11 Container With Most Water
- LeetCode OJ 11 Container With Most Water
- LeetCode OJ:Container With Most Water
- LeetCode OJ - Container With Most Water
- LeetCode OJ Container With Most Water
- 【LeetCode OJ 011】Container With Most Water
- LeetCode OJ - Container With Most Water
- [LeetCode OJ]11. Container With Most Water
- LeetCode OJ-11.Container With Most Water
- [LeetCode OJ]Container With Most Water
- Container With Most Water-Leetcode OJ Problem 11
- LeetCode 11: Container With Most Water
- leetcode 11 Container With Most Water
- Leetcode【11】:Container With Most Water
- [leetcode 11] Container With Most Water
- [leetcode 11] Container With Most Water
- LeetCode | #11 Container With Most Water
- leetcode.11---------Container With Most Water
- 面试被鄙视之路——activity和fragment混合使用时的生命周期
- 批处理自学文档
- Java String replace()使用的一个小错误
- POI--HSSFCell类
- Java_枚举、自动拆装箱和泛型
- #LeetCode OJ #11 Container With Most Water
- C#进阶 WPF基础一 XAML控件基础、布局
- Android 签名打包流程
- 安装配置kafka集群
- LightOJ 1336- Sigma Function
- Java_IO流
- Oracle---使用PL/SQL Developer连接Oracle12C(64位)版本
- hdu 5251(凸包)
- 刷算法题学到的一些思考问题的方式(动态更新)