Ich habe jeden Tag LeetCode 21 ausprobiert. Zwei sortierte Listen zusammenführen (Python, Go)

Einführung

@Ishishow betreibt eine kostenlose englische Word-Site E-tan.

Ich möchte jeden Tag an Letcode arbeiten, um meine Fähigkeiten als Programmierer zu verbessern und meine eigene Art der Lösung zu finden.

Was ist Leetcode?

leetcode.com Dies ist die Praxis des Codierens von Interviews für Softwareentwickler. Insgesamt wurden mehr als 1.500 Codierungsfragen gestellt, und es scheint, dass in tatsächlichen Interviews häufig dieselben Fragen gestellt werden.

Einführung in Go Sprache + Algorithmus Ich werde es mit Golang und Python lösen, um mein Gehirn zu stärken. (Python ist schwach, aber erfahren)

7. Frage (Problem 21)

  1. Merge Two Sorted Lists

--Probleminhalt (japanische Übersetzung)

Fügt zwei sortierte Linklisten zusammen und gibt sie als neue ** sortierte ** Liste zurück. Die neue Liste muss erstellt werden, indem die Knoten der ersten beiden Listen zusammengefügt werden.

Example 1:

img

  Input: l1 = [1,2,4], l2 = [1,3,4]
  Output: [1,1,2,3,4,4]

Example 2:

  Input: l1 = [], l2 = []
  Output: []

Example 3:

  Input: l1 = [], l2 = [0]
  Output: [0]

Denkweise

  1. Erstellen Sie einen neuen ListNode
  2. Übergeben Sie die Referenz des erstellten ListNode an eine Variable namens res
  3. Drehen Sie die Schleife und stellen Sie den kleineren Wert von l1 und l2 vor und weisen Sie ihn cur zu.
  4. Wenn einer der beiden Punkte zum Endpunkt geht, endet die Schleife. Ersetzen Sie also den Rest.
  5. return is res. Da es zuerst 0 ist, beginnt es mit dem nächsten.

--Antwortcode

class Solution(object):
    def mergeTwoLists(self, l1, l2):
        cur = ListNode(0)
        res = cur
        while l1 and l2:
            if l1.val < l2.val:
                cur.next = l1
                l1 = l1.next
            else:
                cur.next = l2
                l2 = l2.next
            cur = cur.next
        cur.next = l1 or l2
        return res.next  
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
	cur := &ListNode{}
	res := cur
	for l1 != nil && l2 != nil {
		if l1.Val < l2.Val {
			cur.Next = l1
			l1 = l1.Next
		} else {
			cur.Next = l2
			l2 = l2.Next
		}
		cur = cur.Next
	}
	if l1 != nil {
		cur.Next = l1
	} else if l2 != nil {
		cur.Next = l2
	}

	return res.Next
}

Recommended Posts

Ich habe jeden Tag LeetCode 21 ausprobiert. Zwei sortierte Listen zusammenführen (Python, Go)
Ich habe jeden Tag LeetCode ausprobiert. 1. Zwei Summen (Python, Go)
Ich habe jeden Tag 20 LeetCode ausprobiert. Gültige Klammern (Python, Go)
Ich habe jeden Tag LeetCode 9 ausprobiert. Palindrome Number (Python, Go)
Ich habe jeden Tag LeetCode ausprobiert 26. Duplikate aus sortiertem Array entfernen (Python, Go)
Ich habe jeden Tag LeetCode ausprobiert. 14. Längstes allgemeines Präfix (Python, Go)
Lassen Sie Code Day24 ab Null "21. Zwei sortierte Listen zusammenführen"
Ich habe es mit Grumpy versucht (Python ausführen).
Ich habe versucht, mit Python Faiss zu laufen, Go, Rust
Ich habe Python> Decorator ausprobiert
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe die C-Erweiterung von Python ausprobiert
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, Python zu berühren (Installation)
Ich habe versucht, WebScraping mit Python.
Ich habe versucht, Thonny (Python / IDE) zu verwenden.
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
Ich habe Line Benachrichtigung in Python versucht
Ich habe die SMTP-Kommunikation mit Python versucht