leetcode 2215. Trouver la différence de deux tableaux (python)

L'offre arrive, creusez des amis pour ramasser! Je participe à l'événement de vérification du recrutement du printemps 2022, cliquez pour voir les détails de l'événement

décris

Étant donné deux tableaux d'entiers indexés à 0 nums1 et nums2, renvoie une réponse de liste de taille 2 où :

  • answer[0] est une liste de tous les entiers distincts dans nums1 qui ne sont pas présents dans nums2.
  • answer[1] est une liste de tous les entiers distincts dans nums2 qui ne sont pas présents dans nums1.

Notez que les nombres entiers dans les listes peuvent être retournés dans n'importe quel ordre.

Exemple 1:

Input: nums1 = [1,2,3], nums2 = [2,4,6]
Output: [[1,3],[4,6]]
Explanation:
For nums1, nums1[1] = 2 is present at index 0 of nums2, whereas nums1[0] = 1 and nums1[2] = 3 are not present in nums2. Therefore, answer[0] = [1,3].
For nums2, nums2[0] = 2 is present at index 1 of nums1, whereas nums2[1] = 4 and nums2[2] = 6 are not present in nums2. Therefore, answer[1] = [4,6].
复制代码

Noter:

1 <= nums1.length, nums2.length <= 1000
-1000 <= nums1[i], nums2[i] <= 1000
复制代码

Analyser

Selon le sens de la question, étant donné deux tableaux d'entiers nums1 et nums2 d'index 0, renvoie une réponse de liste de taille 2, les entiers de la liste peuvent être renvoyés dans n'importe quel ordre et le résultat doit remplir deux conditions :

  • answer[0] est une liste de tous les entiers distincts dans nums1 qui ne sont pas présents dans nums2
  • answer[1] est une liste de tous les entiers distincts dans nums2 qui ne sont pas présents dans nums1

Il s'agit évidemment d'une simple traversée et d'un jugement du tableau. En regardant les contraintes du titre, nous constatons que la longueur maximale de nums1 et nums2 est de 1000. Nous n'avons qu'à le résoudre violemment. D'abord, parcourez les éléments de nums1 et trouvez ceux qui n'existent pas dans nums2. Après déduplication, mettre les éléments dans une liste a, puis parcourir les éléments dans nums2, trouver les éléments qui n'existent pas dans nums1 et les mettre dans une liste b après déduplication, et enfin coller a et b dans une liste de résultats et renvoie Can.

La complexité temporelle est O(N) et la complexité spatiale est O(N).

répondre

class Solution(object):
    def findDifference(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[List[int]]
        """
        a = []
        for c in nums1:
            if c not in nums2 and c not in a:
                a.append(c)
        b = []
        for c in nums2:
            if c not in nums1 and c not in b:
                b.append(c)
        return [a,b]
                
        	      
		
复制代码

résultat de l'opération

202 / 202 test cases passed.
Status: Accepted
Runtime: 930 ms
Memory Usage: 13.6 MB
复制代码

Analyser

Bien sûr, la solution ci-dessus est purement une solution violente pour la résolution rapide et sans cervelle de problèmes. En fait, la signification de ce problème est assez claire, et la méthode la plus concise doit être d'utiliser des ensembles pour trouver la différence.

La complexité temporelle est O(N) et la complexité spatiale est O(N).

En comparant la consommation de temps des deux solutions, nous avons constaté que cette solution est plus efficace en termes de temps.

répondre

class Solution(object):
    def findDifference(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[List[int]]
        """
        s1 = set(nums1)
        s2 = set(nums2)
        a = list(s1-s2)
        b = list(s2-s1)
        return [a,b]
复制代码

résultat de l'opération

202 / 202 test cases passed.
Status: Accepted
Runtime: 193 ms
Memory Usage: 13.7 MB
复制代码

Lien du titre d'origine

leetcode.com/contest/wee…

Votre soutien est ma plus grande motivation

Je suppose que tu aimes

Origine juejin.im/post/7080314758586433567
conseillé
Classement