diff --git a/0011_container-with-most-water/README.md b/0011_container-with-most-water/README.md new file mode 100644 index 0000000..19460e2 --- /dev/null +++ b/0011_container-with-most-water/README.md @@ -0,0 +1,28 @@ +You are given an integer array `height` of length `n`. There are `n` vertical lines drawn such that the two endpoints of the `ith` line are `(i, 0)` and `(i, height[i])`. + +Find two lines that together with the x-axis form a container, such that the container contains the most water. + +Return _the maximum amount of water a container can store_. + +**Notice** that you may not slant the container. + +**Example 1:** + +![](https://s3-lc-upload.s3.amazonaws.com/uploads/2018/07/17/question_11.jpg) + + Input: height = [1,8,6,2,5,4,8,3,7] + Output: 49 + Explanation: The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49. + + +**Example 2:** + + Input: height = [1,1] + Output: 1 + + +**Constraints:** + +* `n == height.length` +* `2 <= n <= 105` +* `0 <= height[i] <= 104` \ No newline at end of file diff --git a/0011_container-with-most-water/python3/solution.py b/0011_container-with-most-water/python3/solution.py new file mode 100644 index 0000000..07407a6 --- /dev/null +++ b/0011_container-with-most-water/python3/solution.py @@ -0,0 +1,17 @@ +class Solution: + def maxArea(self, height: List[int]) -> int: + left = 0 + right = len(height) - 1 + + max_area = float("-inf") + while left < right: + if height[left] <= height[right]: + area = height[left] * (right - left) + max_area = max(max_area, area) + left += 1 + else: + area = height[right] * (right - left) + max_area = max(max_area, area) + right -= 1 + + return max_area