물이 가장 많은 용기
4098 단어 javaleetcodealgorithms
목적:
길이가 n인 정수 배열 높이가 주어집니다. i번째 선의 두 끝점이 (i, 0)과 (i, height[i])가 되도록 n개의 수직선이 그려집니다.
컨테이너가 가장 많은 물을 포함하도록 x축과 함께 컨테이너를 형성하는 두 개의 선을 찾습니다.
용기가 저장할 수 있는 최대 물의 양을 반환합니다.
패턴: 두 포인터 기술
접근하다:
빅오 표기법:
시간 복잡도: O(n)
각 요소에 대해 n번 반복합니다.
공간 복잡도: O(1)
우리는 저장을 위해 추가 데이터 구조를 사용하지 않습니다.
암호:
class Solution {
public int maxArea(int[] height) {
int left = 0;
int right = height.length - 1;
int maxArea = Integer.MIN_VALUE;
int width = height.length - 1;
while(left < right){
int less = Math.min(height[left], height[right]);
maxArea = Math.max(maxArea, less * width);
if(height[left] <= height[right]){
left++;
} else if (height[left] > height[right]) {
right--;
}
width--;
}
return maxArea;
}
}
Reference
이 문제에 관하여(물이 가장 많은 용기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tammyvocs/container-with-most-water-i9k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)