LeetCode(11) Container With Most Water
2015-07-15 22:06
495 查看
一开始使用动态规划来解决这道问题:
将可行解分为两类,一类为包含8号线,一类为不包含8号线;
将8号线依次与0~7号线配对,求出包含8号线的那一类可行解的最大值;
如果已经知道不包含8号线的最大值,即前七条线中的最大值,一个较小的子问题的解;
比较上两步中的最大值,即得结果。
结果是超时,最后看到网上有o(n)的解法,其实不大看的懂,哈哈,代码如下:
上面的代码参考这里
将可行解分为两类,一类为包含8号线,一类为不包含8号线;
将8号线依次与0~7号线配对,求出包含8号线的那一类可行解的最大值;
如果已经知道不包含8号线的最大值,即前七条线中的最大值,一个较小的子问题的解;
比较上两步中的最大值,即得结果。
[code]#include<iostream> #include<vector> using namespace std; class Solution { public: int maxArea(vector<int>& height) { int length = height.size(); int *arr = new int[length]; arr[0] = 0; arr[1] = min(height[0], height[1]) * 1; for(int i = 2; i < height.size(); i++) { int maxArea = 0; for(int j = 0; j < i; j++) { if(min(height[i], height[j]) * (i - j) > maxArea) maxArea = min(height[i], height[j]) * (i - j); } if(maxArea > arr[i - 1]) arr[i] = maxArea; else arr[i] = arr[i - 1]; } //for(int i = 0; i < height.size(); i++) //cout << arr[i] << endl; return arr[height.size() - 1]; } }; int main() { Solution solution; vector<int> height; height.push_back(3);height.push_back(2);height.push_back(5);height.push_back(3); height.push_back(4);height.push_back(2);height.push_back(1);height.push_back(1); //solution.maxArea(height); cout << solution.maxArea(height) << endl; getchar(); }
结果是超时,最后看到网上有o(n)的解法,其实不大看的懂,哈哈,代码如下:
[code]class Solution { public: int maxArea(vector<int>& height) { int left = 0; int right = height.size() - 1; int max = min(height[left], height[right]) * (right - left); int tmp; while(left < right) { if(height[left] < height[right]) { left++; max = max > min(height[left], height[right]) * (right - left) ? max : min(height[left], height[right]) * (right - left); }else { right--; max = max > min(height[left], height[right]) * (right - left) ? max : min(height[left], height[right]) * (right - left); } } return max; } };
上面的代码参考这里
相关文章推荐
- linxu的RAID技术
- 太晚睡觉等于自杀http://blog.csdn.net/augusdi/article/details/5440987
- STL中容器的erase()
- CLOSE-WAIT与TIME_WAIT
- 关于keepalived执行后日志狂刷IPVS: Can't initialize ipvs: Protocol not available的问题
- Change the log files location of a WebLogic Domain
- 杭电1145 so you want to be a 2n-aire?
- 内存管理: alloc, retain, release, autorelease, copy, assign
- pthread_cond_wait的理解
- 内存管理(一):栈区、堆区,成员变量和局部变量,alloc,retain,自动释放池,成员变量及属性的内存管理
- liunx GHOST clonezilla(再生龙)UltraISO刻录问题
- 解决Robotium测试中Installation error INSTALL_FAILED_VERSION_DOWNGRADE错误
- Communications Link failure
- 关于android.intent.action.MAIN与android.intent.category
- 2013 Multi-University Training Contest 4
- 通过手机页面获取当前城市
- Rails4 中 因为secret key 引起在production环境下无法运行
- toj3852. Haitang1
- push-pull和open drain
- [Win32SDK基本]ListView Controls(2)Report (details) View 详解(续)