์ƒˆ์†Œ์‹

IN DEPTH CAKE/Supercoder

[c++/LeetCode-Array] 56. Merge Intervals

  • -
๋ฐ˜์‘ํ˜•

 

๋‚œ์ด๋„Medium

ํ‚ค์›Œ๋“œ: Array

 

 

๋ฌธ์ œ

 

๋ฌธ์ œ์›๋ฌธ: https://leetcode.com/problems/merge-intervals/description/

์ฃผ์–ด์ง„ ๊ฐ„๊ฒฉ ๋ฐฐ์—ด์—์„œ, intervals[i] = [starti, endi]์ธ ๊ฐ„๊ฒฉ๋“ค์ด ์žˆ์„ ๋•Œ, ๊ฒน์น˜๋Š” ๋ชจ๋“  ๊ฐ„๊ฒฉ์„ ๋ณ‘ํ•ฉํ•˜๊ณ , ์ž…๋ ฅ๋œ ๋ชจ๋“  ๊ฐ„๊ฒฉ์„ ํฌ๊ด„ํ•˜๋Š” ๊ฒน์น˜์ง€ ์•Š๋Š” ๊ฐ„๊ฒฉ๋“ค์˜ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜์‹œ์˜ค.

 

๋ฌธ์ œ ํ’€์ด

 

๊ฒน์น˜๋Š” ๊ตฌ๊ฐ„๋“ค์„ ํ•ฉ์ณ์ฃผ๊ธฐ์œ„ํ•ด์„œ, intervals ๋ฅผ start time ๊ธฐ์ค€์œผ๋กœ sortingํ•˜๊ณ  merge๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด sort๋Š” O(n log n)์ด ๋ณด์žฅ๋˜๊ณ , sorting ๋œ array์— ๋Œ€ํ•ด์„œ merge๋งŒ ํ•ด์ฃผ๋ฉด ๋˜๋ฏ€๋กœ O(n). ์ตœ์ข…์ ์œผ๋กœ O(n log n) ๋ณต์žก๋„๋กœ ํ•ด๊ฒฐ.

 

#include <algorithm>
#include <vector>

using namespace std;

bool compare(const vector<int>& left, const vector<int>& right){
    return left[0] < right[0];
};
class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        sort(intervals.begin(), intervals.end(), compare);
        vector<vector<int>> ans;

        for(auto interval: intervals){
            if(ans.size() > 0 && interval[0] <= ans[ans.size()-1][1]){
                ans[ans.size()-1][1] = max(interval[1], ans[ans.size()-1][1]);
            } else {
                ans.emplace_back(interval);
            }
        }
        return ans;
    }
};

 

๋ฐ˜์‘ํ˜•

'IN DEPTH CAKE > Supercoder' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[c++/LeetCode-2DArray] 48. Rotate Image  (1) 2024.05.05
[c++/LeetCode-Array] 75. Sort Colors  (3) 2024.05.05
[c++/LeetCode-Array] 162. Find Peak Element  (1) 2024.05.02
[์ฝ”๋”ฉ/LeetCode150-(11)] 274. H-Index  (2) 2023.08.23
[์ฝ”๋”ฉ/LeetCode150-(10)] 45. Jump Game II  (0) 2023.08.22
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

# ๋กœ๋”ฉ ํ™”๋ฉด ๋™์ž‘ ์ฝ”๋“œ(Code) ์„ค์ •ํ•˜๊ธฐ