LeetCode算法题——11. Container With Most Water
来源:互联网 发布:美工怎么样 编辑:程序博客网 时间:2024/06/14 18:03
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) 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.
Subscribe to see which companies asked this question.
1 算法思想,计算每个面积求出最大值
class Solution {
public:
int maxArea(vector<int>& height) {
int areaMax=-1;
for(int i=0;i<height.size()-1;i++){
for(int j=i+1;j<height.size();j++){
areaMax=max(areaMax,min(height[i],height[j])*(j-i));
}
}
return areaMax;
}
};
在大数据情况下超时
2 改进算法思想
现假定取得最大面积的坐标为(i,height[i])(j,height[j]),其中i<j,
则areaMax=max(areaMax,min(height[i],height[j])*(j-i)),由此可推知在j的右端没有一条线比它高,设k>j,且height[k]>height[j],min(height[i],height[k])=min(height[i],height[j]),则areaMax'=max(areaMax,min(height[i],height[j])*(k-i))>areaMax,与原假设矛盾。
同理可知,i的左端没有一条线比它低
#include <iostream>
#include <vector>
#include "math.h"
using namespace std;
class Solution {
public:
int maxArea(vector<int>& height) {
int areaMax=-1;
int i=0,j=height.size()-1;
// for(int i=0;i<height.size()-1;i++){
// for(int j=i+1;j<height.size();j++){
// areaMax=max(areaMax,min(height[i],height[j])*(j-i));
// }
// }
while(i<j){
areaMax=max(areaMax,min(height[i],height[j])*(j-i));
if(height[i]>height[j]){
j--;
}else{
i++;
}
}
return areaMax;
}
};
int main(){
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(1);
Solution sol;
int result=sol.maxArea(v);
cout<<result;
return 0;
}
0 0
- LeetCode算法题——11. Container With Most Water
- LeetCode算法题——Container With Most Water
- python写算法题:leetcode: 11. Container With Most Water
- LeetCode算法问题6 —— Container With Most Water
- 数据结构与算法[LeetCode]—Container With Most Water
- LeetCode——Container With Most Water
- leetcode——Container With Most Water
- Container With Most Water——LeetCode
- leetcode——Container With Most Water
- LeetCode——Container With Most Water
- Container With Most Water —— Leetcode
- leetcode——Container With Most Water
- LeetCode——Container With Most Water
- LeetCode——Container With Most Water
- leetcode—Container With Most Water
- LeetCode——11. Container With Most Water
- LeetCode 11. Container With Most Water —— Java
- LeetCode——11. Container With Most Water
- Linux网络编程——tcp并发服务器(poll实现)
- 安卓基础 overload与override的区别
- Linux网络编程——tcp并发服务器(epoll实现)
- DWR的简易使用
- android studio gradle下载、配置
- LeetCode算法题——11. Container With Most Water
- 如何用一个APP控制多个产品
- 关于mac 10.12.3 USB启动盘制作 分享
- Struts jar包详解
- android 仿ios系统桌面小红点
- windbg高级条件断点初探
- 1051. Pop Sequence
- 51Nod-1128-正整数分组 V2
- vue2+express+mysql小练习