56. Trier par plage de fusion

Problème : 56. Intervalles de fusion

Annuaire d'articles

train de pensée

Triez le tableau des extrémités gauches les plus petites aux plus grandes. Initialisez Merged et placez-y le premier intervalle. Traversant les intervalles, si l'extrémité gauche de l'intervalle actuel est plus grande que l'extrémité droite du dernier intervalle fusionné et ne se chevauche pas, ajoutez directement l'intervalle à la fin, sinon, chevauchez et mettez à jour l'extrémité droite du dernier intervalle.
insérez la description de l'image ici

Code


class Solution {
    
    
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
    
    

        // 合并区间 
        
        int n = intervals.size() ; 

        sort(intervals.begin() , intervals.end()) ; 
        vector<vector<int>> merged ; 

        merged.push_back(intervals[0]) ;
        int r = intervals[0][1] ; 
        
        for(int i = 1 ; i<intervals.size() ; i++) {
    
    
            int start = intervals[i][0] ; 
            int end = intervals[i][1] ; 
            // 如果当前的左端点小于之前的右,不重合
            if(start > r) {
    
    
                merged.push_back({
    
    start,end}) ;
            }else{
    
    
                // 否则,重合,更新右端点
                merged.back()[1] = max(merged.back()[1] ,end) ;
            }
            r = merged.back()[1] ; 
            
        }
        return merged ; 
    }
};
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        # 合并区间
        intervals.sort()  # Sort the intervals based on their start points
        merged = [intervals[0]]
        r = intervals[0][1]

        for i in range(1, len(intervals)):
            start, end = intervals[i]
            # If the current interval's start is greater than the previous interval's end, they don't overlap
            if start > r:
                merged.append([start, end])
            else:
                # Otherwise, they overlap, update the end point of the merged interval
                merged[-1][1] = max(merged[-1][1], end)
            r = merged[-1][1]

        return merged

Je suppose que tu aimes

Origine blog.csdn.net/qq_41661809/article/details/131983606
conseillé
Classement