【】 Leetcode 1387. Ordenar números enteros por el valor de potencia

Los temas son los siguientes:

El poder de un número entero  x se define como el número de pasos necesarios para transformar  x en  1 el uso de los siguientes pasos:

  • si  x es incluso entonces x = x / 2
  • si  x es impar entonces x = 3 * x + 1

Por ejemplo, la potencia de x = 3 es 7 debido a 3 necesidades 7 pasos para convertirse en 1 (3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1) .

Dado tres números enteros  lohi y  k. La tarea es ordenar todos los números enteros en el intervalo  [lo, hi] por el valor de potencia en orden ascendente, si dos o más enteros tienen el mismo valor de potencia ordenarlos por orden ascendente.

Devolver el  k-th número entero en el rango  [lo, hi] ordenados por el valor de la potencia.

Tenga en cuenta que para cualquier entero  x (lo <= x <= hi) se garantiza que  x se transformará en  1 el uso de estos pasos y que el poder de  x es quepa en 32 bits con signo entero.

Ejemplo 1:

Entrada: Lo = 12, hi = 15, k = 2 
de salida: 13 
Explicación: El poder de 12 es 9 (12 -> 6 -> 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1) 
el poder de 13 es 9 
la potencia de 14 es 17 
el poder de 15 es 17 
el intervalo de ordenadas según el valor de potencia [12,13,14,15]. Para k = 2 respuesta es el segundo elemento que es 13. 
Observe que 12 y 13 tienen el mismo valor de la potencia y les clasifican en orden ascendente. Lo mismo para el 14 y el 15.

Ejemplo 2:

Entrada: Lo = 1, hi = 1, k = 1 
Salida: 1

Ejemplo 3:

Entrada: Lo = 7, hi = 11, k = 4 
de salida: 7 
Explicación: La matriz de potencia correspondiente al intervalo [7, 8, 9, 10, 11] es [16, 3, 19, 6, 14]. 
El intervalo ordenados por potencia es [8, 10, 11, 7, 9]. 
El cuarto número en la matriz ordenada es 7.

Ejemplo 4:

Entrada: Lo = 10, hi = 20, k = 5 
de salida: 13

Ejemplo 5:

Entrada: Lo = 1, hi = 1,000, k = 777 
de salida: 570

limitaciones:

  • 1 <= lo <= hi <= 1000
  • 1 <= k <= hi - lo + 1

La resolución de problemas las ideas: la gama de hi y lo es de 1 a 1000, el poder entre todos los números dentro del rango se consideran para resolver suficiente.

Código es el siguiente:

clase Solution (objeto):
     def getKth (self, lo, hi, k):
         "" " 
        : Tipo de lo: int 
        : Tipo hi: int 
        : Tipo k: int 
        : RTYPE: int 
        """ 
        par = []
         def transformar ( val): 
            recuento = 0
             , mientras que val = 1! : 
                val = val / 2 si val% 2 == 0 cosa 3 * val + 1 
                recuento + 1 =
             retorno recuento 

        de i en el rango (lo, hi + 1 ):
            pair.append ((i, transformo (i))) 

        def CMPF (v1, v2):
             si v1 [1] = v2 [1! ]:
                 retorno v1 [1] - v2 [1 ]
             retorno v1 [0] - v2 [0] 

        pair.sort (CMPF) 

        retorno par [k-1] [0]

 

Supongo que te gusta

Origin www.cnblogs.com/seyjs/p/12590731.html
Recomendado
Clasificación