https://leetcode.com/problems/container-with-most-water/description/
아래와 같이 수조가 있으며, 이때 높이의 배열이 주어진다.
물을 가장 많이 담은 때의 물의 면적을 구하라.
양 수조의 기둥을 좁히며 면적을 구한다.
면적은 간단히 구할 수 있다.
문제는 좁히는 방법이다.
양옆 기둥의 높이 중, 작은 쪽을 변경시켜 더 큰 결과를 얻는 것을 유도한다.
코드.
더보기
int maxArea(vector<int>& height)
{
int left = 0;
int right = height.size() - 1;
int maxArea = 0;
while (left < right)
{
int curH = min(height[left], height[right]);
int area = (right - left) * curH;
maxArea = max(maxArea, area);
if (height[left] > height[right])
--right;
else if (height[left] < height[right])
++left;
else
{
++left; --right;
}
}
return maxArea;
}
결과
'Leetcode > NeetCode' 카테고리의 다른 글
[SlidingWindow][Medium] 3. Longest Substring Without Repeating Characters (0) | 2024.07.09 |
---|---|
[SlidingWindow][Easy] 121. Best Time to Buy and Sell Stock (0) | 2024.07.09 |
[TwoPointers][Medium] 15. 3Sum (0) | 2024.07.09 |
[TwoPointers][Medium] 167. Two Sum II - Input Array Is Sorted (0) | 2024.07.09 |
[TwoPointers][Easy] 125. Valid Palindrome (0) | 2024.07.08 |