LeetCode之 Container With Most Water
2018-03-30 09:17
302 查看
没什么要说的,坚持吧!
注意:您不得倾斜容器,并且n至少为2。
在这种情况下,我们将简单地考虑每条可能的线对的面积并找出这些线的最大面积
时间复杂度:O(n^2)
空间复杂度:O(1)
这种方法背后的直觉是,线条之间形成的区域总是受较短线条高度的限制。此外,线越远,获得的面积就越大。
时间复杂度:O(n)
空间复杂度:O(1)
LeetCode官网:https://leetcode.com/
我是直接用GitHub授权登录的。问题
给定n个非负整数a 1,a 2,…,a n,其中每个代表坐标(i,a i)处的一个点。绘制n条垂直线,使得线i的两个端点处于(i,a i)和(i,0)处。找到两条线,它们与x轴一起形成一个容器,以使容器包含最多的水。注意:您不得倾斜容器,并且n至少为2。
解法一(暴力解决,超出时限)
算法在这种情况下,我们将简单地考虑每条可能的线对的面积并找出这些线的最大面积
public class Solution { public int maxArea(int[] height) { int maxarea = 0; for (int i = 0; i < height.length; i++) for (int j = i + 1; j < height.length; j++) maxarea = Math.max(maxarea, Math.min(height[i], height[j]) * (j - i)); return maxarea; } }
时间复杂度:O(n^2)
空间复杂度:O(1)
解法二(双指针方法)
算法这种方法背后的直觉是,线条之间形成的区域总是受较短线条高度的限制。此外,线越远,获得的面积就越大。
public class Solution { public int maxArea(int[] height) { int maxarea = 0, l = 0, r = height.length - 1; while (l < r) { maxarea = Math.max(maxarea, Math.min(height[l], height[r]) * (r - l)); if (height[l] < height[r]) l++; else r--; } return maxarea; } }
时间复杂度:O(n)
空间复杂度:O(1)
相关文章推荐
- leetcode:Container With Most Water
- [LeetCode-Algorithms-11] "Container With Most Water" (2017.10.2-WEEK5)
- LeetCode:Container With Most Water
- 【Leetcode】Container With Most Water (Water)
- LeetCode 11: Container With Most Water
- LeetCode11: Container With Most Water
- LeetCode——Container With Most Water
- 010_leetcode Container With Most Water
- [Leetcode] Container With Most Water 能装最大水的容量
- [LeetCode] Container With Most Water
- Leetcode:Container with most water 最大蓄水量
- LeetCode: Container With Most Water [Java]
- LeetCode Container With Most Water
- LeetCode No.11 Container With Most Water
- Leetcode 11[medium]--Container With Most Water
- Leetcode代码学习周记——Container With Most Water
- leetcode — container-with-most-water
- LeetCode——Container With Most Water
- leetcode — container-with-most-water
- [LeetCode]Container With Most Water