J'ai essayé LeetCode tous les jours 21. Fusionner deux listes triées (Python, Go)

introduction

@Ishishow gère un site de mots anglais gratuit E-tan.

J'aimerais travailler quotidiennement sur letcode pour améliorer mes capacités de programmeur et donner ma propre façon de le résoudre.

Qu'est-ce que Leetcode

leetcode.com C'est la pratique de coder des interviews pour les développeurs de logiciels. Au total, plus de 1 500 questions de codage ont été affichées, et il semble que les mêmes questions soient souvent posées lors d'entretiens réels.

Introduction au langage Go + Algorithme Je vais le résoudre avec Golang et Python pour renforcer mon cerveau. (Python est faible mais expérimenté)

7e question (problème 21)

  1. Merge Two Sorted Lists

Fusionne deux listes de liens triées et les renvoie sous la forme d'une nouvelle liste ** triée **. La nouvelle liste doit être créée en joignant les nœuds des deux premières listes ensemble.

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]

Façon de penser

  1. Créez un nouveau ListNode
  2. Passez la référence du ListNode créé à une variable appelée res
  3. Tournez la boucle et avancez la valeur la plus petite de l1 et l2 et affectez-la à cur.
  4. Lorsque l'un ou l'autre atteint le point final, la boucle se termine, alors remplacez le reste.
  5. return est res. Comme il est 0 au début, il commence par le suivant.

--Code de réponse

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

J'ai essayé LeetCode tous les jours 21. Fusionner deux listes triées (Python, Go)
J'ai essayé LeetCode tous les jours 1. Two Sum (Python, Go)
J'ai essayé LeetCode tous les jours 20. Parenthèses valides (Python, Go)
J'ai essayé LeetCode tous les jours 9. Palindrome Number (Python, Go)
J'ai essayé LeetCode tous les jours 26. Supprimer les doublons du tableau trié (Python, Go)
J'ai essayé LeetCode tous les jours 14.Le plus long préfixe commun (Python, Go)
Let Code Day24 À partir de zéro "21. Fusionner deux listes triées"
J'ai essayé Grumpy (allez exécuter Python).
J'ai essayé d'exécuter faiss avec python, Go, Rust
J'ai essayé Python> décorateur
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé l'extension C de Python
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai essayé de toucher Python (installation)
J'ai essayé webScraping avec python.
J'ai essayé d'utiliser Thonny (Python / IDE)
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la notification de ligne en Python
J'ai essayé la communication SMTP avec Python