【LeetCode刷题记录】11. 盛最多水的容器

题目描述:
在这里插入图片描述
题解:
一、暴力破解(时间复杂度:O(n2), 空间复杂度:O(1))
BF方法的思路简单,两层循环,遍历所有可能性,找出其中最大的。不作赘述。
二、双指针
使用双指针,一个指头,一个指尾,面积=较短的高度*两者间距,短的一侧向中间移动,直至两指针重合。
代码:

int maxArea(vector<int>& height) {
 int res = 0;
 int i = 0;
 int j = height.size() - 1;
 while (i < j) {
  int area = (j - i) * min(height[i], height[j]);
  res = max(res, area);
  if (height[i] < height[j]) {
   i++;
  }
  else {
   j--;
  }
 }
 return res;
}

复杂度分析:遍历一遍,时间复杂度O(n);只创建了几个局部变量,空间复杂度O(1)。

原创文章 23 获赞 0 访问量 983

猜你喜欢

转载自blog.csdn.net/weixin_42192493/article/details/105240393