Post

leetcode(리트코드)56-Merge Intervals

leetcode 56 - Merge Intervals 문제입니다.

1. 문제

https://leetcode.com/problems/merge-intervals/


2. Input , Output


3. 분류 및 난이도

Medium 난이도 문제입니다.
leetcode Top 100 Liked 문제입니다.


4. 문제 해석

  • 구간의 시작과 끝이 주어집니다. 겹치는 구간은 합쳐버려서 구간을 다시 리턴합니다.

5. code

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        result =[]
        intervals.sort()
        index = 0
        while index < len(intervals):
            temp = []
            start = intervals[index][0]
            end = intervals[index][1]
            j = index+1
            while j < len(intervals) and end >= intervals[j][0] : 
                end = max(intervals[j][1],end)
                index = j
                j += 1
            temp.append(start)
            temp.append(end)
            result.append(temp)
            index+=1
        return result
        

c++

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
class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        vector<vector<int>> result;
        sort(intervals.begin(),intervals.end());
        for(int i = 0; i<intervals.size(); ++i)
        {
            vector<int> temp;
            int start = intervals[i][0];
            int end = intervals[i][1];
            int j = i+1;
            while(j<intervals.size() && end >= intervals[j][0])
            {
                end = max(intervals[j][1],end);
                i=j;
                ++j;
            }
            temp.push_back(start);
            temp.push_back(end);
            result.push_back(temp);
        }
        
        return result;
    }
};

6. 결과 및 후기, 개선점

94%

This post is licensed under CC BY 4.0 by the author.