Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 |
Tags
- Python
- Deployment
- dockerfile
- 자바스크립트
- asgi
- elasticsearch
- FastAPI
- intervals
- kernel
- terraform
- github
- AWS
- asyncio
- IAM
- YAML
- Kubernetes
- IAC
- ansible
- POD
- Django
- WSGI
- K8S
- docker
- 쿠버네티스
- EC2
- Service
- leetcode
- event loop
- ebs
- EKS
Archives
- Today
- Total
궁금한게 많은 개발자 노트
[ leetcode ] 56. Merge Intervals 본문
여러 구간들이 주어졌을 때, 겹치는 구간을 병합하여 겹치지 않는 구간들의 리스트를 반환하는 문제입니다.
먼저 구간들을 오름차순으로 정렬하고, 정답 리스트에 구간을 하나 추가하고 마지막 추가된 구간과 새로 들어갈 구간들이 겹치는지 판단하여 겹치는 경우 마지막 구간을 빼서 병합하고 다시 넣어주는 과정을 반복합니다.
#include <algorithm>
#define max(a,b)((a) > (b) ? (a) : (b))
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end());
vector<vector<int>> answer;
for (int i = 0; i < intervals.size(); i++) {
int start = intervals[i][0];
int end = intervals[i][1];
if (answer.size()) {
if (answer[answer.size()-1][1] >= start) {
vector<int> item = answer.back();
answer.pop_back();
start = item[0];
end = max(end, item[1]);
}
}
answer.push_back(vector<int>{start, end});
}
return answer;
}
};
'Algorithm' 카테고리의 다른 글
[ leetcode ] 258. Add Digits (0) | 2023.05.02 |
---|---|
[ leetcode ] 1288. Remove Covered Intervals (0) | 2023.05.02 |
[ leetcode ] 1046. Last Stone Weight (0) | 2023.05.02 |
[ leetcode ] 236. Lowest Common Ancestor of a Binary Tree (0) | 2023.05.02 |
[ leetcode ] 235. Lowest Common Ancestor of a Binary Search Tree (0) | 2023.05.02 |
Comments