11. Container With Most Water

  • Source : Link
  • Author : Han
  • Date : 2022-01-20

Problems

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

1
2
3
4
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:

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

Solution

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
    fun maxArea(height: IntArray): Int {
        var result = 0
        var reverseIndex = height.size - 1
        var index = 0
        while (index < reverseIndex) {
            result = maxOf(minOf(height[index], height[reverseIndex]) * (reverseIndex - index), result)
            if(height[index] < height[reverseIndex]) index++ else reverseIndex--
        }
        return result
    }
}