C++
粗暴的使用两层循环显示超出时间限制,一般双层循环问题都要考虑是不是可以用双指针解决,这里考虑使用从两边向里逼近,哪边低一些哪边就往里走
思路
class Solution {
public:
int maxArea(vector<int>& height) {
int i = 0,j = height.size()-1,ans = 0;
while(i<j){
ans = height[i] < height[j]?
max(ans, (j-i)*height[i++]):
max(ans, (j-i)*height[j--]);
}
return ans;
}
};
Python
class Solution:
def maxArea(self, height: List[int]) -> int:
i, j , ans = 0, len(height)-1, 0
while i < j:
if height[i] < height[j]:
ans = max(ans, height[i]*(j-i))
i += 1
else:
ans = max(ans, height[j]*(j-i))
j -= 1
return ans