56. Clasificación de rango de fusión

Problema: 56. Intervalos de fusión

Directorio de artículos

tren de pensamiento

Ordene la matriz de puntos finales izquierdos pequeños a grandes. Inicialice Merged y coloque el primer intervalo en él. Recorriendo intervalos, si el punto final izquierdo del intervalo actual es más grande que el punto final derecho del último intervalo combinado y no se superpone, agregue directamente el intervalo al final; de lo contrario, superponga y actualice el punto final derecho del último intervalo.
inserte la descripción de la imagen aquí

Código


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

Supongo que te gusta

Origin blog.csdn.net/qq_41661809/article/details/131983606
Recomendado
Clasificación