처음으로 작성한 코드
Time: 23 ms (61.21%), Space: 22.9 MB (87.58%)
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> answer;
sort(intervals.begin(), intervals.end());
int left = intervals[0][0], right = intervals[0][1];
answer.push_back(intervals[0]);
for (int i = 1; i < intervals.size(); i++) {
// intervals[i][0]이 right보다 크면 answer.push_back(intervals[i]) 하고, left&right 초기화
// intervals[i][0]이 right보다 작거나 같으면 넘어가기 (아래로)
// intervals[i][1]이 right보다 크면 right = intervals[i][1], answer 마지막 원소 right 값 갱신
if (right < intervals[i][0]) {
answer.push_back(intervals[i]);
left = intervals[i][0];
right = intervals[i][1];
}
right = max(right, intervals[i][1]);
answer.back()[1] = right;
}
return answer;
}
};
두 번째 코드
Time: 15 ms (96.72%), Space: 23 MB (37.6%)
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> answer;
sort(intervals.begin(), intervals.end());
int size = intervals.size();
for (int i = 0; i < size; i++) {
if (answer.empty() || answer.back()[1] < intervals[i][0]) {
answer.push_back(intervals[i]);
}
else {
answer.back()[1] = max(answer.back()[1], intervals[i][1]);
}
}
return answer;
}
};
(1) Time: 15 ms (96.72%), Space: 23 MB (37.6%)
int size = intervals.size();
for (int i = 0; i < size; i++) { }
(2) Time: 30 ms (19.53%), Space: 23 MB (72.73%)
for (int i = 0; i < intervals.size(); i++) { }
=> 생각보다 많이 남 ㅜㅜ