11. Container With Most Water

2024. 10. 10. 17:36·Algorithm/LeetCode

문제

각 위치의 높이를 나타내는 정수 배열이 주어진다. 두 위치 간 높이에 따른 최대 부피를 계산하는 문제이다.

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

링크

https://leetcode.com/problems/container-with-most-water/

Solution 1

class Solution {
    public int maxArea(int[] height) {
        int max = 0;
        int n = height.length;
        for(int i=0;i<n;i++) {
            int h1 = height[i];

            for(int j=i+1;j<n;j++) {
                int h2= height[j];
                if(h1<=h2) {
                    max = Math.max(max, h1*(j-i));
                }
                else {
                    max = Math.max(max, h2*(j-i));
                }
            }
        }
        return max;
    }
}

문제를 읽고 직관적으로 생각한 풀이 방식이다.

  • 시간 복잡도: O(n^2)
  • 타임 초과 발생!

Solution 2

class Solution {
    public int maxArea(int[] height) {
        int max = 0;
        int n = height.length;
        int l = 0;
        int r = n - 1;
        while (l < r) {
            int hl = height[l];
            int hr = height[r];
            int h = Math.min(hl, hr);
            max = Math.max(max, h * (r - l));
            if (hl <= hr)
                l += 1;
            else
                r -= 1;
        }
        return max;

    }
}

부피의 최대를 구하는 문제이다. 부피는 높이와 너비를 고려해야 한다. 높이와 너비는 위치에 따라 변동한다. 따라서 둘 중 하나를 고정시켜서 나머지를 비교 후 후보를 도출하고 고정 요소를 이동시킨다. 이 문제에서 너비(위치)를 고정 요소로 지정하였다. L, R 포인트를 양 끝으로 지정(최대 너비로 시작)하여 높이를 비교하여 정답 후보를 도출하였다.

  • 시간 복잡도: O(n)
  • L, R 포인트를 사용해서 풀이

'Algorithm > LeetCode' 카테고리의 다른 글

452. Minimum Number of Arrows to Burst Balloons  (0) 2024.10.16
417. Pacific Atlantic Water Flow  (0) 2024.10.14
207. Course Schedule  (0) 2024.10.13
133. Clone Graph  (0) 2024.10.11
15. 3Sum  (0) 2024.10.05
'Algorithm/LeetCode' 카테고리의 다른 글
  • 417. Pacific Atlantic Water Flow
  • 207. Course Schedule
  • 133. Clone Graph
  • 15. 3Sum
사랑우주인
사랑우주인
  • 사랑우주인
    lovelyAlien
    사랑우주인
  • 전체
    오늘
    어제
  • 글쓰기
    관리
    • 분류 전체보기 (209)
      • Programming (4)
        • Spring (28)
        • Java (46)
        • JPA (2)
        • 디자인 패턴 (5)
        • 개발&아키텍처 (0)
      • Network (14)
      • OS (19)
      • Database (1)
      • Kubernetes (0)
      • Kafka (2)
      • Algorithm (49)
        • BaekJoon (1)
        • Programmers (19)
        • Algorithm (5)
        • Socar (2)
        • LeetCode (19)
      • Interview (2)
      • Issues (2)
      • DotJoin (1)
      • Git (4)
      • 독서 (3)
      • 끄적끄적 (1)
      • 외부활동 (26)
        • 항해플러스 (2)
        • JSCODE 네트워크 (19)
        • JSCODE 자바 (5)
      • SQL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    fcfs
    @JsonProperty
    준영속 엔티티
    운영체제
    Climbing Stairs
    BFS
    JSCode
    추상화 클래스
    lower bounded wildcards
    Reorder List
    OS
    @JsonNaming
    Generic
    minimum number of arrows to burst balloons
    RR
    runner 기법
    제네릭
    LinkedList
    pacific atlantic water flow
    socar
    Thread
    Oauth2
    AuthenticationSuccessHandler
    clone graph
    트랜잭션
    디자인 패턴
    algorithm
    wildcards
    rotting oranges
    Process
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
사랑우주인
11. Container With Most Water
상단으로

티스토리툴바