문제링크: https://leetcode.com/problems/container-with-most-water/
계속되는 투포인터 파기
리스트 안에 벽의 높이가 주어진다. 그 중 물을 가득 담았을때 최대 부피를 갖는 두 벽을 찾으면 된다.
예를 들어,
[1,8,6,2,5,4,8,3,7]
라는 리스트가 주어졌을때, 두번째와 마지막 벽을 고르면 물을 최대로 담을 수 있게된다.
이번엔 미디엄 문제여서인지, 조금은 쉽게 푼 느낌이다.
class Solution:
def maxArea(self, height: List[int]) -> int:
left, right = 0, len(height) - 1
max_volume = 0
while left < right:
min_height = min(height[right], height[left])
length = right - left
volume = min_height * length
max_volume = max(max_volume, volume)
if height[left] < height[right]:
left += 1
else:
right -= 1
return max_volume
지금까지는, 투포인터가 두개로 나뉘는것 같다. 포인터 둘다 한곳에서 시작하는 유형과, 포인터들이 각 끝에서 시작 하는 유형.
투포인터 문제라고 확신이 들면, 두가지 경우를 모두 생각해봐야겠다.
지금까지 푼 투포인터들 한번 정리하고 가는것도 좋을지도..?