Dadas N tarjetas que tienen números enteros positivos impresos en el anverso y el reverso de cada tarjeta (posiblemente diferentes). Se puede voltear cualquier número de cartas, y después de eso, elegimos una carta del mazo. Si el número X escrito en el reverso de la tarjeta elegida no está en el anverso de ninguna tarjeta, decimos que el número X es bueno. La tarea es encontrar el número más pequeño que sea bueno. Si ningún número es bueno, imprima 0 .
Nota: Al voltear se intercambian los números del anverso y el reverso presentes en la tarjeta, es decir, el valor del anverso ahora está en el reverso y viceversa.
Ejemplos:
Entrada: frentes = [1, 2, 4, 4, 7, 8], reversos = [1, 3, 4, 1, 3, 9]
Salida: 2
Si volteamos la segunda carta, los frentes son [1, 3 , 4, 4, 7, 8] y los reversos son [1, 2, 4, 1, 3, 9].
Ahora, elegimos la segunda carta, que tiene el número 2 en el reverso y no está en el anverso de ninguna otra carta, por lo que el 2 está bien.Entrada: frentes = [1, 2, 3, 4, 5], reversos = [6, 7, 8, 9, 10]
Salida: 1
Acercarse:
- Si una carta tiene el mismo valor K escrito en el anverso y el reverso, entonces K no puede ser la respuesta, ya que no importa cuántas veces arrojes la carta, el resultado será el mismo.
- Todas las demás cartas que tienen números diferentes escritos en el anverso y el reverso son candidatas para la respuesta, ya que no importa cuántas veces se repita el número K
front
en la array, simplemente voltee todas las cartas y ya no habrá una carta que tenga K escrito . el anverso, entonces simplemente podemos elegir cualquier tarjeta (mínimo) que tenga K escrita en su reverso y es la respuesta. - Ahora el problema se reduce a encontrar todos los números K1, K2,…, Kn tal que no se repitan en ninguna tarjeta y luego entre todos los números escritos en el reverso de K1, K2,…, Kn hallar el mínimo.
- Si el resultado no es posible, imprima 0 .
A continuación se muestra la implementación del enfoque anterior:
# Python3 iomplementation of the approach import itertools MAX = 9999 def flipgame(fronts, backs): same = {k for i, k in enumerate(fronts) if k == backs[i]} # Initialize answer to arbitrary value ans = MAX for k in itertools.chain(fronts, backs): if k not in same: ans = min(ans, k) # Return final answer return ans % MAX # Driver Code fronts = [1, 2, 4, 4, 7] backs = [1, 3, 4, 1, 3] print(flipgame(fronts, backs))
2
Publicación traducida automáticamente
Artículo escrito por Sanjit_Prasad y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA