leetcode 2215. Encuentra la diferencia de dos matrices (python)

Llega oferta, cava amigos a recoger! Estoy participando en el evento de registro de reclutamiento de primavera de 2022, haga clic para ver los detalles del evento

describir

Dadas dos matrices de enteros indexadas a 0 nums1 y nums2, devuelva una respuesta de lista de tamaño 2 donde:

  • answer[0] es una lista de todos los enteros distintos en nums1 que no están presentes en nums2.
  • answer[1] es una lista de todos los enteros distintos en nums2 que no están presentes en nums1.

Tenga en cuenta que los números enteros de las listas se pueden devolver en cualquier orden.

Ejemplo 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].
复制代码

Nota:

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

Analizar gramaticalmente

De acuerdo con el significado de la pregunta, dadas dos matrices de enteros nums1 y nums2 con índice 0, devuelva una respuesta de lista de tamaño 2, los enteros de la lista se pueden devolver en cualquier orden y el resultado debe cumplir dos condiciones:

  • answer[0] es una lista de todos los enteros distintos en nums1 que no están presentes en nums2
  • answer[1] es una lista de todos los enteros distintos en nums2 que no están presentes en nums1

Obviamente, esto es un simple recorrido y juicio de la matriz. Mirando las restricciones del título, encontramos que la longitud máxima de nums1 y nums2 es 1000. Solo necesitamos resolverlo violentamente. Primero, recorre los elementos en nums1 y encuentra aquellos que no existen en nums 2. Después de la deduplicación, coloque los elementos en una lista a, luego recorra los elementos en nums2, encuentre los elementos que no existen en nums1 y colóquelos en una lista b después de la deduplicación, y finalmente empalme a y b en una lista de resultados y devolver Can.

La complejidad temporal es O(N) y la complejidad espacial es O(N).

responder

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]
                
        	      
		
复制代码

resultado de la operación

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

Analizar gramaticalmente

Por supuesto, la solución anterior es puramente una solución violenta para la resolución rápida y sin cerebro de problemas. De hecho, el significado de este problema es bastante claro, y el método más conciso debe ser usar conjuntos para encontrar la diferencia.

La complejidad temporal es O(N) y la complejidad espacial es O(N).

Al comparar el consumo de tiempo de las dos soluciones, encontramos que esta solución es más eficiente en el tiempo.

responder

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]
复制代码

resultado de la operación

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

Enlace del título original

leetcode.com/contest/wee…

Tu apoyo es mi mayor motivación.

Supongo que te gusta

Origin juejin.im/post/7080314758586433567
Recomendado
Clasificación