leetcode(리트코드)2월17일 challenge11-Container With Most Water
leetcode(리트코드)2월17일 challenge11-Container With Most Water
leetcode February challenge17 - Container With Most Water 문제입니다.
1. 문제
https://leetcode.com/problems/container-with-most-water/
2. Input , Output
Constraints:
- n == height.length
- 2 <= n <= 3 * 104
- 0 <= height[i] <= 3 * 104
3. 분류 및 난이도
Medium 난이도입니다.
2월17일자 챌린지 문제입니다.
4. 문제 해석
- 막대 두개를 잡아서 그 막대안의 사각형의 최댓값을 구해 리턴합니다.
- 당연하겠지만 브루트 포스로 이중 포문으로 접근하면 시간초과뜹니다.(제가해봄..)
- 그러면 양쪽에서 값을 비교하면서 접근하는 수밖에 없다고 생각했습니다.
5. code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public:
int maxArea(vector<int>& height) {
int result = 0;
//왼쪽 인덱스
int left = 0;
//오른쪽 인덱스
int right = height.size()-1;
while(left<=right)
{
//둘 중 작은 값을 기준으로 해야하므로
int line = min(height[left],height[right]);
//넓이 계산
int area = line * (right-left);
//큰 값이면 갱신해줘야하므로
result = max(area,result);
// 작은 값을 옮겨야합니다. 다음은 큰값이 들어올 수도 있기 때문이죠.
if(height[left]<height[right])
++left;
else
--right;
}
return result;
}
};
6. 결과 및 후기, 개선점
시간(95%)
This post is licensed under CC BY 4.0 by the author.