# GeetCode Hub

Given `n` non-negative integers `a1, a2, ..., an` , where each represents a point at coordinate `(i, ai)`. `n` vertical lines are drawn such that the two endpoints of the line `i` is at `(i, ai)` and `(i, 0)`. Find two lines, which, together with the x-axis forms a container, such that the container contains the most water.

Notice that you may not slant the container.

Example 1:

```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
```

Example 3:

```Input: height = [4,3,2,1,4]
Output: 16
```

Example 4:

```Input: height = [1,2,1]
Output: 2
```

Constraints:

• `n == height.length`
• `2 <= n <= 105`
• `0 <= height[i] <= 104`

public int MaxArea(int[] height) { var result = 0; var maxH = 0; for (int i = 0; i < height.Length - 1; i++) if (maxH < height[i]) { maxH = height[i]; for (int j = i + 1; j < height.Length; j++) { var minH = height[i] > height[j] ? height[j] : height[i]; var tmp = minH * (j - i); if (result < tmp) result = tmp; } } return result; } Soluation#2: public int MaxArea(int[] height) { var result = 0; for (int i = 0, j = height.Length - 1; i < j;) { var tempHeight = Math.Min(height[i], height[j]) * (j - i); if (result < tempHeight) result = tempHeight; if (height[i] < height[j]) i++; else j--; } return result; }

This question can be easily solved by two pointer approach. in two pointer approach, we need to shrink the window from left and right, and find the maximum while doing the shrinking.

Time Complexity: O(n)

Space Complexity: O(1)