Ejemplo:
Entrada: N = 5, M = 3 A = [6, 5, 7, 1, 3] B = [2, 4, 8] Resultado: 2 0 2 1 2 2 3 0 4 0 1 0 0 0 Tenemos que formar 5 + 3 - 1 = 7 parejas. Estos pares son: (7, 2), (7, 4), (7, 8), (1, 2), (3, 2), (5, 2), (6, 2) Todos tienen una suma única
Enfoque de fuerza bruta: podemos ejecutar un bucle en las matrices A y B para encontrar los primeros N + M-1 pares de sumas únicas e imprimir sus índices en el camino.< br>Para verificar si se ha utilizado una cantidad específica, creamos un diccionario Python Bool. Si el valor del diccionario para esta suma es Falso, significa que este es el nuevo valor de la suma. Si es verdadero, la cantidad ya se ha utilizado.
Código:
de
colecciones
importar
defaultdict as dd
# Función para generar pares únicos de sumas
def
pares_únicos():
# Python Bool Dictionary
# Para cada elemento A, busque
< código clase = "comentarios"> # suma única de un par en B. Ruptura
(n):
for
j
1
):
romper
print
(i, j)
n, m
=
6
6
,
4
]
b
=
Salida:
0 0 0 1 0 2 0 3 1 0 1 3 2 3 4 1 4 2
Complejidad del tiempo: porque recorremos la matriz utilizando bucles, la complejidad del tiempo resulta ser O ().
Enfoque eficiente: cómo solo ordenaremos ambas matrices, primero podemos crear N pares de sumas únicas conectando todos los elementos de la matriz A con el primer elemento de la matriz B, y luego conectando el resto M — 1 elementos del arreglo B con el último elemento del arreglo A.
Código:
colecciones
import
defaultdict as dd
# Función para generar pares únicos de sumas
def
unique_pairs_sort():
# Python Int Dictionary
< código clase="simple"> da
f o
da [a [i]]
< clase de código ="palabra clave"> =
# N pares A con B [0]
para
n, m
unique_pairs_sort ()
Salida:
5 3 2 3 1 3 3 3 0 3 4 3 4 0 4 2 4 1
Complejidad temporal: La complejidad de esto es igual al tiempo que lleva ordenar: O (n Log n).
Complejidad espacial: porque estamos usando dos mapas/diccionarios diferentes para almacenar índices de matriz. La complejidad temporal será O (n + m), donde n — el tamaño de la primera matriz y m — el tamaño de la segunda matriz.