标签:one class cte else rac src 想法 技术 如何
[11] Container With Most Water [Medium]
O(n^2)的暴力解法直接TLE。
正确的解法是Two Pointers。 O(n)的复杂度。保持两个指针i,j;分别指向长度数组的首尾。如果ai 小于aj,则移动i向后(i++)。反之,移动j向前(j--)。如果当前的area大于了所记录的area,替换之。这个想法的基础是,如果i的长度小于j,无论如何移动j,短板在i,不可能找到比当前记录的area更大的值了,只能通过移动i来找到新的可能的更大面积。
1 class Solution { 2 public: 3 int maxArea(vector<int>& height) { 4 int i = 0; 5 int j = height.size() - 1; 6 int ans = 0; 7 while(i < j) { 8 int area = (j - i) * min(height[i], height[j]); 9 ans = max(ans, area); 10 if (height[i] <= height[j]) { 11 ++i; 12 } 13 else { 14 --j; 15 } 16 } 17 return ans; 18 } 19 };
标签:one class cte else rac src 想法 技术 如何
原文地址:http://www.cnblogs.com/zhangwanying/p/6136030.html