435. Intervalos que no se superponen [medio]

435. Intervalos no superpuestos-Problema de intervalo

Descripción del Título

Dado un conjunto de intervalos, encuentre el número mínimo de intervalos que deben eliminarse para que los intervalos restantes no se superpongan entre sí.

Nota:

可以认为区间的终点总是大于它的起点。
区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。

Ejemplo 1:

输入: [ [1,2], [2,3], [3,4], [1,3] ]

输出: 1

解释: 移除 [1,3] 后,剩下的区间没有重叠。

Ejemplo 2:

输入: [ [1,2], [1,2], [1,2] ]

输出: 2

解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。

Ejemplo 3:

输入: [ [1,2], [2,3] ]

输出: 0

解释: 你不需要移除任何区间,因为它们已经是无重叠的了。

respuesta

Esta pregunta también es una forma de resolver el problema codicioso y eliminar el menor intervalo.

  • Requiere la menor cantidad posible de intervalos de eliminación
  • Primero ordene el intervalo de acuerdo con el final del intervalo
  • Subproblema: solo es necesario asegurarse de que el extremo izquierdo de cada nuevo intervalo> = el extremo derecho del intervalo reservado actual.

El comparador puede referirse a esto

Código

class Solution {
    
    
    public int eraseOverlapIntervals(int[][] intervals) {
    
    
        //贪心问题:找到移除区间的最小数量
        // 意味着区间本身长度尽可能小
        // 子问题:优先保留结尾尽可能小 且不冲突的区间

        // 代码优化
        if(intervals.length == 0){
    
    
            return 0;
        }
        // 重构排序 比较器
        Arrays.sort(intervals,new Comparator<int []>(){
    
    
            public int compare(int[] interval1,int[] interval2){
    
    
                //比较区间末尾
                return interval1[1] -interval2[1];
            }
        });
        // 获取数组长度
        int n = intervals.length;
        // 设置第一个区间的末尾为初始值
        int right = intervals[0][1];
        // 第一个区间必然满足
        int ans = 1;
        for(int i=1; i<n; i++){
    
    
            //如果接下来的区间初始值比上一个末尾大,就可
            if(intervals[i][0] >= right){
    
    
                ++ans;
                right = intervals[i][1];

            }
        }
    return n-ans;
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_37747189/article/details/115095294
Recomendado
Clasificación