stack overflow란?

while(alive){ code();

코딩테스트

[leetcode] 11. Container With Most Water : python

나가니 2023. 1. 17. 21:41

길이 n의 정수 배열이 제공됩니다. 
x축과 함께 용기를 구성하는 두 개의 선을 찾아 용기에 물이 가장 많이 포함되도록 합니다.
용기에 저장할 수 있는 최대 물 양을 반환합니다.
용기를 기울여서는 안 됩니다.

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104

Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49

Greedy

 

class Solution:
    def maxArea(self, height: List[int]) -> int:
 
        left, right = 0, len(height)-1
        area=0

        while left < right:
            width = right-left
            min_h = min(height[left],height[right])
            area = max(area,width*min_h)
 
            if height[left]>height[right]:
                right-=1
                while height[right] < min_h:
                    right-=1
            else:
                left+=1
                while height[left] < min_h:
                    left+=1
 
        return area