[Java][LeetCode][TwoPointers] Container With Most Water #11

SP Hou
1 min readFeb 11, 2022

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

此題反向
左右兩邊邊界往中間,因為容積的計算是以兩邊邊界最小數為主,所以判斷哪一邊的邊界數最小,進而移動那一邊的邊界,每次都計算容積,並取得最大值。我的第一個版本其實是很土的做了兩層while,可想而知遇到非常長的長度就會gg了,後來思考既然是取最小值,那就判斷兩邊邊界大小就好了,不需要一一去比較。

From left and right side close to middle. Calculated container is minimum number multiply space. We just only need to judge which side is the minimum. Keeping the max when we calculate container. My first version is two while loop. of course, when the input is a long length array. I will get “Time Limit Exceeded”.

--

--