[leetcode] 1640. Comprobar la formación de la matriz mediante la concatenación

Descripción

Se le da una matriz de enteros distintos arr y una matriz de partes de matrices de enteros, donde los enteros en partes son distintos. Su objetivo es formar arr concatenando las matrices en pedazos en cualquier orden. Sin embargo, no se le permite reordenar los números enteros en cada pieza de la matriz [i].

Devuelve verdadero si es posible formar la matriz arr a partir de piezas. De lo contrario, devuelve falso.

Ejemplo 1:

Input: arr = [85], pieces = [[85]]
Output: true

Ejemplo 2:

Input: arr = [15,88], pieces = [[88],[15]]
Output: true
Explanation: Concatenate [15] then [88]

Ejemplo 3:

Input: arr = [49,18,16], pieces = [[16,18,49]]
Output: false
Explanation: Even though the numbers match, we cannot reorder pieces[0].

Ejemplo 4:

Input: arr = [91,4,64,78], pieces = [[78],[4,64],[91]]
Output: true
Explanation: Concatenate [91] then [4,64] then [78]

Ejemplo 5:

Input: arr = [1,3,5,7], pieces = [[2,4,6,8]]
Output: false

Restricciones:

  • 1 <= piezas.longitud <= arr.longitud <= 100
    suma (piezas [i] .longitud) == arr.longitud
  • 1 <= piezas [i] .length <= arr.length
  • 1 <= arr [i], piezas [i] [j] <= 100
  • Los enteros en arr son distintos.
  • Los enteros en piezas son distintos (es decir, si aplanamos piezas en una matriz 1D, todos los enteros en esta matriz son distintos).

análisis

El significado de la pregunta es: dados arr y piezas, compruebe que las piezas pueden estar compuestas por arr, pero el orden de las piezas [i] no se puede cambiar. Ideas Me refiero a las ideas de otras personas, primero, si el número contenido en piezas no está en arr, devuelve False. Luego clasifique las piezas según la posición de arr, y luego vuelva a empalmarlas en res. Si es lo mismo que arr, indica que cumple con los requisitos;

Código

class Solution:
    def canFormArray(self, arr: List[int], pieces: List[List[int]]) -> bool:
        for piece in pieces:
            if(piece[0] not in arr):
                return False
        pieces.sort(key=lambda x:arr.index(x[0]))
        res=[]
        for piece in pieces:
            res+=piece
        if(res==arr):
            return True
        else:
            return False

Supongo que te gusta

Origin blog.csdn.net/w5688414/article/details/113920739
Recomendado
Clasificación