Container with most water

  • Post author:
  • Post category:其他


大概是要找到条纵线然后这两条线以及X轴构成的容器能容纳最多的水。

下面以例子:   [4,6,2,6,7,11,2] 来讲解。

1、将他们原来的编号记下,同时排序得到[2:2, 2:6, 4:0, 6:1, 6:3, 7:4, 11:5]

2、高度是升序的,所以当前高度必为容器的高度,宽度计算为标号差值的最大,例:高为2时,宽为4,高为4时,宽为6.。。。。

代码运行超时,需要改变算法

class Solution {
public:
    int maxArea(vector<int> &height) 
	{
        map<int, int> object;
		for(int i = 0; i < height.size(); i++)
		{
			object.insert(make_pair(height[i], i));
		}

		int result = 0;
		map<int, int>::iterator it, ip, temp;
		for(it = object.begin(); it != object.end(); it++)
		{
			int width = 0;
			temp = it;
			for(ip = temp++; ip != object.end(); ip++)
			{
				if(abs(ip->second - it->second) > width)
				{
					width = abs(ip->second - it->second);
				}
			}

			if(width * it->first > result)
				result = width * it->first;
		}

		return result;
    }
};



版权声明:本文为u012289758原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。