【LeetCode】56.merge-intervals

1736 단어
제목 주소
https://leetcode.com/problems/merge-intervals/
제목의 대의.
https://leetcode-cn.com/problems/merge-intervals/
문제풀이의 방향
인터넷을 두루 돌아다니며 모든 인터넷을 현재merge가 완성한 부분과 비교하고 새로운 부분의 집합을 유지하여 이번 인터넷이 관여한 부분의 결과를 저장한다. 두 인터넷 사이에는 다음과 같은 5가지 상황이 있다.
마지막으로 이번merge 결과로 업데이트합니다.
C++ 코드
class Solution {
public:
    vector> merge(vector>& intervals) {
        vector> result;
        for (vector interval: intervals) {
            vector> tempRet;
            for (int i = 0; i < result.size(); i++) {
                if (interval[0] <= result[i][0] && result[i][0] <= interval[1] && result[i][1] >= interval[1]) {
                    interval[1] = result[i][1];
                    continue;
                }
                
                if (interval[0] <= result[i][1] && result[i][1] <= interval[1] && result[i][0] <= interval[0]){
                    interval[0] = result[i][0];
                    continue;
                }
            
                if (interval[1] <= result[i][1] && result[i][0] <= interval[0]) {
                    interval[0] = result[i][0];
                    interval[1] = result[i][1];
                    continue;
                }
        
                if (interval[0] <= result[i][0] && result[i][1] <= interval[1]) {
                    continue;
                }
                
                tempRet.push_back(result[i]);
            }
            
            tempRet.push_back(interval);
            result = tempRet;
        }
        
        return result;
    }
};

좋은 웹페이지 즐겨찾기