Intervalle de fusion LeeCode56 (Java) (file d'attente)

Lien de rubrique: Intervalle de fusion LeeCode56
Description de la rubrique:
Trier d'abord (trier par le premier chiffre d'un tableau à deux dimensions), et utiliser une file d'attente pour stocker la séquence actuelle à résoudre (ne pas savoir si la plage suivante chevauche la plage actuelle séquence à résoudre). Lorsque la limite droite de la séquence à résoudre est plus petite que la limite gauche de la séquence suivante, quittez la file d'attente, placez la séquence suivante, etc. Pour ce problème, vous devez faire attention à la probabilité que le la longueur du tableau est plus petite que la longueur du tableau d'origine, vous devriez donc ouvrir un autre transfert de tableau.Maintenant, s'il y a un grand gars, il m'apprendra d'autres façons, également qaq

class Solution {
    
    
    public static int[][] merge(int[][] intervals) {
    
    
        Queue<int[]> queue=new ArrayDeque<>();
        int [][] ans=new int[intervals.length][2];
        int index=0;
        Arrays.sort(intervals,(a,b)->a[0]-b[0]);
        queue.add(intervals[0]);
        for (int i = 1; i < intervals.length; i++) {
    
    
            int[] peek = queue.poll();
            if(peek[1]>=intervals[i][0]){
    
    
                if(peek[1]<intervals[i][1]){
    
    
                    peek[1]=intervals[i][1];    
                }
                queue.add(peek);
            }else{
    
    
                ans[index][0]=peek[0];
                ans[index++][1]=peek[1];
                queue.add(intervals[i]);
            }
        }
        if(!queue.isEmpty()){
    
    
            int[] poll = queue.poll();
            ans[index][0]=poll[0];
            ans[index++][1]=poll[1];
        }
        int[][] ans1=new int[index][2];
        for (int i = 0; i < index; i++) {
    
    
            ans1[i]=Arrays.copyOf(ans[i],2);
        }
        return ans1;
    }
}

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43590593/article/details/112613266
conseillé
Classement