leetcode
Leetcode 11 - Container with Most Water
monsangter
2023. 4. 24. 00:03
브루트포스
class Solution:
def maxArea(self, height: List[int]) -> int:
res = 0
for l in range(len(height)):
for r in range(l + 1, len(height)):
area = (r - l) * min(height[l], height[r])
res = max(res, area)
return res
가능 한 모든 경우의 수를 판단한다. l , r포인터를 포문으로 이동하고 가능한 모든 조합에 대한 영역 값을 계산해 결과값 구함.
시간복잡도 n^2
포인터 활용 풀이
class Solution:
def maxArea(self, height: List[int]) -> int:
res = 0
l,r = 0, len(height) - 1
while l < r:
area = (r - l ) * min(height[l], height[r])
res = max(res, area)
if height[l] < height[r]:
l += 1
else:
r -= 1
return res
양 끝단에서 포인터를 두고 시작한다. 그리고 양쪽 height중에서 더 작은 쪽의 포인터를 움직이며 max area를 갱신한다.