File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed
container-with-most-water Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
1
+ # https://leetcode.com/problems/container-with-most-water/
2
+
3
+ from typing import List
4
+
5
+ class Solution :
6
+ def maxArea (self , height : List [int ]) -> int :
7
+ """
8
+ [Complexity]
9
+ - TC: O(n)
10
+ - SC: O(1)
11
+
12
+ [Approach]
13
+ 양끝에서부터 범위를 좁히면서 확인하는 two-pointer를 이용한다.
14
+ 양끝 side 중 더 작은 쪽을 안쪽으로 한 칸 옮기면서 확인하고,
15
+ 만약 두 side가 길이가 같다면 두 개를 모두 안쪽으로 한 칸 옮긴다.
16
+ """
17
+
18
+ lo , hi = 0 , len (height ) - 1
19
+ max_amount = 0
20
+
21
+ while lo < hi :
22
+ # 양 끝 side 길이
23
+ s1 , s2 = height [lo ], height [hi ]
24
+
25
+ # max_amount 업데이트
26
+ max_amount = max (max_amount , (hi - lo ) * min (s1 , s2 ))
27
+
28
+ # 더 낮은 side를 안쪽으로 한 칸 옮기기
29
+ if s1 < s2 :
30
+ lo += 1
31
+ elif s1 > s2 :
32
+ hi -= 1
33
+ # 두 side의 크기가 같다면, 둘다 안쪽으로 한 칸씩 옮기기
34
+ else :
35
+ lo += 1
36
+ hi -= 1
37
+
38
+ return max_amount
You can’t perform that action at this time.
0 commit comments