Heim Java javaLernprogramm Führen Sie zwei sortierte verknüpfte Listen auf einfache und optimale Weise in Java zusammen

Führen Sie zwei sortierte verknüpfte Listen auf einfache und optimale Weise in Java zusammen

Aug 12, 2024 pm 08:30 PM

Merge two sorted linked lists in java simple and optimal way

Das Zusammenführen zweier sortierter verknüpfter Listen ist ein häufiges Problem, das effizient gelöst werden kann. Hier erfahren Sie, wie Sie dies mit Java auf einfache und optimale Weise tun können.

Schritte:

  1. Erstellen Sie einen Dummy-Knoten: Verwenden Sie einen Dummy-Knoten, um den Zusammenführungsprozess zu vereinfachen. Dieser Knoten dient als Anfang der zusammengeführten Liste.
  2. Knoten vergleichen: Vergleichen Sie die aktuellen Knoten beider verknüpfter Listen. Hängen Sie den kleineren Knoten an die zusammengeführte Liste an und bewegen Sie den Zeiger dieser Liste nach vorne.
  3. Verbleibende Knoten verarbeiten: Wenn eine Liste vor der anderen erschöpft ist, hängen Sie die verbleibenden Knoten der nicht erschöpften Liste an die zusammengeführte Liste an.
  4. Gibt die zusammengeführte Liste zurück: Die zusammengeführte Liste beginnt beim Knoten neben dem Dummy-Knoten.

Java-Implementierung:

class ListNode {
    int val;
    ListNode next;

    ListNode(int val) {
        this.val = val;
        this.next = null;
    }
}

public class LinkedList {

    // Function to merge two sorted linked lists
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        // Create a dummy node to act as the starting point
        ListNode dummy = new ListNode(0);
        ListNode current = dummy;

        // Traverse both lists and compare nodes
        while (l1 != null && l2 != null) {
            if (l1.val <= l2.val) {
                current.next = l1;
                l1 = l1.next;
            } else {
                current.next = l2;
                l2 = l2.next;
            }
            current = current.next;
        }

        // If one list is exhausted, link the remaining nodes of the other list
        if (l1 != null) {
            current.next = l1;
        } else {
            current.next = l2;
        }

        // The merged list starts from the next node of the dummy node
        return dummy.next;
    }

    // Function to print the linked list
    public void printList(ListNode head) {
        ListNode temp = head;
        while (temp != null) {
            System.out.print(temp.val + " ");
            temp = temp.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        LinkedList list = new LinkedList();

        // Create first sorted linked list: 1 -> 3 -> 5
        ListNode l1 = new ListNode(1);
        l1.next = new ListNode(3);
        l1.next.next = new ListNode(5);

        // Create second sorted linked list: 2 -> 4 -> 6
        ListNode l2 = new ListNode(2);
        l2.next = new ListNode(4);
        l2.next.next = new ListNode(6);

        System.out.println("First List:");
        list.printList(l1);

        System.out.println("Second List:");
        list.printList(l2);

        // Merge the two lists
        ListNode mergedList = list.mergeTwoLists(l1, l2);

        System.out.println("Merged List:");
        list.printList(mergedList);
    }
}
Nach dem Login kopieren

Erläuterung:

  1. ListNode-Klasse:

    • Stellt jeden Knoten in der verknüpften Liste mit einem ganzzahligen Wert (val) und einem Zeiger auf den nächsten Knoten (next) dar.
  2. mergeTwoLists-Methode:

    • Dummy-Knoten: Ein Dummy-Knoten (Dummy) wird verwendet, um den Zusammenführungsprozess zu vereinfachen, indem er einen Ausgangspunkt bereitstellt.
    • Vergleichsschleife: Wir durchlaufen beide verknüpften Listen und vergleichen die aktuellen Knoten. Der kleinere Knoten wird zur zusammengeführten Liste hinzugefügt und wir wechseln zum nächsten Knoten in dieser Liste.
    • Verbleibende Knoten: Nachdem eine der Listen erschöpft ist, hängen wir den verbleibenden Teil der anderen Liste direkt an die zusammengeführte Liste an.
    • Zurück: Schließlich beginnt die zusammengeführte Liste beim Knoten neben dem Dummy-Knoten.
  3. printList-Methode:

    • Diese Dienstprogrammfunktion druckt alle Knoten in der verknüpften Liste zur einfachen Visualisierung.
  4. Hauptmethode:

    • Erstellen Sie zwei sortierte verknüpfte Listen: Zum Beispiel 1 -> 3 -> 5 und 2 -> 4 -> 6.
    • Listen zusammenführen: Die zusammengeführte Liste ist 1 -> 2 -> 3 -> 4 -> 5 -> 6.
    • Drucken Sie die Listen aus: Vor und nach dem Zusammenführen, um den Effekt zu sehen.

Komplexität:

  • Zeitkomplexität: ( O(n + m) ), wobei ( n ) und ( m ) die Längen der beiden verknüpften Listen sind. Jeder Knoten in beiden Listen wird genau einmal verarbeitet.
  • Raumkomplexität: ( O(1) ), da außer ein paar Hinweisen kein zusätzlicher Raum verwendet wird.

Diese Methode ist sowohl einfach als auch optimal zum Zusammenführen zweier sortierter verknüpfter Listen und sorgt so für effizienten und sauberen Code.

Das obige ist der detaillierte Inhalt vonFühren Sie zwei sortierte verknüpfte Listen auf einfache und optimale Weise in Java zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1666
14
PHP-Tutorial
1273
29
C#-Tutorial
1255
24
Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Apr 19, 2025 pm 04:51 PM

Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Apr 19, 2025 pm 11:30 PM

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Apr 19, 2025 pm 06:21 PM

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Apr 19, 2025 pm 11:45 PM

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Apr 19, 2025 pm 11:42 PM

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Wie kann ich Java -Objekte sicher in Arrays umwandeln? Wie kann ich Java -Objekte sicher in Arrays umwandeln? Apr 19, 2025 pm 11:33 PM

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Wie verwendet ich die Redis -Cache -Lösung, um die Anforderungen der Produktranking -Liste effizient zu erkennen? Wie verwendet ich die Redis -Cache -Lösung, um die Anforderungen der Produktranking -Liste effizient zu erkennen? Apr 19, 2025 pm 11:36 PM

Wie erkennt die Redis -Caching -Lösung die Anforderungen der Produktranking -Liste? Während des Entwicklungsprozesses müssen wir uns häufig mit den Anforderungen der Ranglisten befassen, z. B. das Anzeigen eines ...

E-Commerce-Plattform SKU und SPU-Datenbankdesign: Wie berücksichtigen Sie sowohl benutzerdefinierte Attribute als auch Attributloses Produkte? E-Commerce-Plattform SKU und SPU-Datenbankdesign: Wie berücksichtigen Sie sowohl benutzerdefinierte Attribute als auch Attributloses Produkte? Apr 19, 2025 pm 11:27 PM

Detaillierte Erläuterung des Designs von SKU- und SPU-Tabellen auf E-Commerce-Plattformen In diesem Artikel werden die Datenbankdesignprobleme von SKU und SPU in E-Commerce-Plattformen erörtert, insbesondere wie man mit benutzerdefinierten Verkäufen umgeht ...

See all articles