처음으로 작성한 코드
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++) { }

=> 생각보다 많이 남 ㅜㅜ

 

+ Recent posts