물이 가장 많은 용기
5631 단어 arrayleetcodetwopointer
길이가 n인 정수 배열 높이가 주어집니다. i번째 선의 두 끝점이 (i, 0)과 (i, height[i])가 되도록 n개의 수직선이 그려집니다.
컨테이너에 가장 많은 물이 들어 있는 것과 같이 x축과 함께 컨테이너를 형성하는 두 개의 선을 찾습니다.
용기가 저장할 수 있는 최대 물의 양을 반환합니다.
컨테이너를 기울일 수 없습니다.
https://leetcode.com/problems/container-with-most-water/에서 가져온 문제 설명
무차별 접근
var maxArea = function (heights) {
let maxArea = 0;
for (let p1 = 0; p1 < heights.length; p1++) {
for (let p2 = p1 + 1; p2 < heights.length; p2++) {
const length = Math.min(heights[p1], heights[p2]);
const width = p2 - p1;
const area = length * width;
maxArea = Math.max(area, maxArea);
}
}
return maxArea;
}
시간 복잡도 : O(n^2)
공간 복잡도 : O(1)
최적화된 접근법
let maxArea = 0, p1 = 0, p2 = heights.length - 1;
while (p1 < p2) {
const height = Math.min(heights[p1], heights[p2]);
const width = p2 - p1;
const area = height * width;
maxArea = Math.max(maxArea, area);
if (heights[p1] <= heights[p2]) {
p1++;
} else {
p2--;
}
}
return maxArea;
시간 복잡도 : O(n)
공간 복잡도 : O(1)
Reference
이 문제에 관하여(물이 가장 많은 용기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/styluso7/container-with-most-water-3hm7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)