recherche
MaisonJavajavaDidacticielComment fusionner des listes chaînées ordonnées en Java

Problème

Fusionner deux listes chaînées ascendantes en une nouvelle liste chaînée ascendante et revenir. La nouvelle liste chaînée est formée en concaténant tous les nœuds des deux listes chaînées données.

Exemple 1 :

Comment fusionner des listes chaînées ordonnées en Java

Entrée : l1 = [1,2,4], l2 = [1,3,4]
Sortie : [1,1,2,3,4,4]

Exemple 2 :

Entrée : l1 = [], l2 = []
Sortie : []

Exemple 3 :

Entrée : l1 = [], l2 = [0]
Sortie : [0]

Idée

Version 1

  • Créer une liste chaînée vide nList

  • Dans les deux listes chaînées (l1, l2) Si il n'est pas vide, comparez les valeurs des premiers éléments des deux listes chaînées, retirez le plus petit et ajoutez-le à la nouvelle liste chaînée. Ensuite, le pointeur de tête de la petite liste chaînée pointe vers le bit suivant, et. le pointeur de nList pointe également vers le bit suivant

  • Si les deux listes chaînées ne sont pas encore vides, continuez à boucler

  • Si l'une des deux listes chaînées est vide, collez la liste chaînée non vide à l'arrière de nList

  • Enfin, renvoie le suivant de nList en tant que nœud principal de la nouvelle liste chaînée

Version 2

  • détermine d'abord si les deux listes chaînées sont vides et renvoie directement la liste chaînée vide s'il est vide. S'il n'est pas vide, continuez à descendre

  • pour déterminer lequel des nœuds principaux de l1 et l2 est le plus petit, puis enregistrez ce nœud comme nœud principal, et les nœuds suivants seront épissés par-dessus. nœud à la fois.

  • Les idées suivantes sont les mêmes que la première version

Réponse

Version un

Créez un nouveau nœud et transférez toutes les listes chaînées d'origine vers la nouvelle liste chaînée

public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
    ListNode head = new ListNode(-1);
    ListNode   = head;
    while (list1 != null && list2 != null) {
        boolean b = list1.val <= list2.val;
        all.next = b ? list1 : list2;
        if (b) list1 = list1.next;
        else list2 = list2.next;
        all = all.next;
    }
    all.next = list1 != null ? list1 : list2;
    return head.next;
}

Version deux

Sélectionnez-en une parmi la liste chaînée d'origine Intégrez et n'appliquez aucune nouvelle mémoire

public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
    if (list1 == null || list2 == null) {
        return list1 == null ? list2 : list1;
    }
    ListNode head = list1.val <= list2.val ? list1 : list2;
    if (list1.val <= list2.val)
        list1 = list1.next;
    else
        list2 = list2.next;
    ListNode tmp = head;
    while (list1 != null && list2 != null) {
        boolean b = list1.val <= list2.val;
        tmp.next = b ? list1 : list2;
        if (b) list1 = list1.next;
        else list2 = list2.next;
        tmp = tmp.next;
    }
    tmp.next = list1 != null ? list1 : list2;
    return head;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP