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