[LeetCode][Python3] 42. Trapping Rain Water
2019. 3. 23. 00:27 |
프로그래밍/LeetCode
Problem :
https://leetcode.com/problems/trapping-rain-water/
My Solution :
class Solution:
def trap(self, height: List[int]) -> int:
i, j = 0, len(height)-1
max_i = max_j = water = 0
while i < j:
if height[i] < height[j]:
max_i = max(max_i, height[i])
water += (max_i - height[i])
i += 1
else:
max_j = max(max_j, height[j])
water += (max_j - height[j])
j -= 1
return water
Comment :
양 끝에서 안쪽으로 포인터를 한칸씩 이동하며 물을 채운다. 매 회 이동할 포인터는 각 포인터 중 높이가 더 낮거나 같은 포인터를 선택한다. 왜냐하면 거기에 물을 채워도 반대쪽 포인터의 높이가 더 높거나 같기 때문에 방금 채운 물이 절대로 흘러내리지 않음을 보장받을 수 있기 때문이다.
'프로그래밍 > LeetCode' 카테고리의 다른 글
[LeetCode][Python3] 297. Serialize and Deserialize Binary Tree (0) | 2019.03.25 |
---|---|
[LeetCode][Python3] 105. Construct Binary Tree from Preorder and Inorder Traversal (0) | 2019.03.24 |
[LeetCode][Python3] 131. Palindrome Partitioning (0) | 2019.03.23 |
[LeetCode][Python3] 128. Longest Consecutive Sequence (0) | 2019.03.23 |
[LeetCode][Python] 341. Flatten Nested List Iterator (0) | 2019.03.22 |
[LeetCode][Python3] 200. Number of Islands (0) | 2019.02.11 |
[LeetCode][Python3] 300. Longest Increasing Subsequence (0) | 2019.02.10 |
[LeetCode][Python3] 240. Search a 2D Matrix II (0) | 2019.02.09 |
최근에 달린 댓글 최근에 달린 댓글