문제
https://leetcode.com/problems/merge-intervals/
걸린 시간
-
풀이
C++
#define MAX 1e4+1
struct link{
bool left, right, mid;
};
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> ans;
vector<link> array(MAX, {false, false, false});
for(vector<int> i : intervals){
if(i[0] == i[1]){
array[i[0]].mid = true;
continue;
}
array[i[0]].right = true;
for(int j = i[0]+1; j < i[1]; j++){
array[j].left = array[j].right = true;
}
array[i[1]].left = true;
}
vector<int> tmp;
for(int i = 0; i < MAX; i++){
if(array[i].left && !array[i].right) tmp.push_back(i);
if(!array[i].left && array[i].right) tmp.push_back(i);
if(array[i].mid && !array[i].left && !array[i].right){
tmp.push_back(i);
tmp.push_back(i);
}
}
for(int i = 0; i < tmp.size(); i+=2)
ans.push_back({tmp[i], tmp[i+1]});
return ans;
}
};
정렬 문제인 것 같은데 다른 방법으로 풀이했다.
연결 정보를 구조체로 관리하여 중복된 구간들을 하나로 합쳤다.
'LeetCode' 카테고리의 다른 글
LeetCode 823. Binary Trees With Factors (0) | 2021.03.15 |
---|---|
LeetCode 147. Insertion Sort List (0) | 2021.02.25 |
LeetCode 208. Implement Trie (Prefix Tree) (0) | 2021.02.21 |
LeetCode 297. Serialize and Deserialize Binary Tree (0) | 2021.02.08 |
LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal (0) | 2021.02.07 |
댓글