[Leetcode - 496] en un elemento de mayor -Fácil

Dados dos matrices nums1 no hay elementos duplicados y nums2, en el que nums1 es un subconjunto de nums2. Nums1 encuentra debajo de cada elemento en un nums2 es mayor que el valor.

Los números de elemento siguiente más altos se refieren nums1 x x x corresponde al primer elemento es más grande que la posición correcta en el nums2. Si no, la salida de la posición correspondiente a -1.

Ejemplo 1:

Entrada: nums1 = [4,1,2], nums2 = [1,3,4,2].
De salida: [1,3, -1]
Explicación:
Para num1 en la figura 4, que no están en el segundo matriz para encontrar el siguiente número más grande, y por lo tanto la salida 1.
Para num1 en las figuras 1, el siguiente número más alto en un segundo número de matriz 1 a la derecha es de tres.
Para num1 en el número 2, la segunda matriz es no siguiente número más grande, y por lo tanto la salida 1.
Ejemplo 2:

Entrada: nums1 = [2,4], nums2 = [1,2,3,4].
De salida: [3, -1]
Explicación:
  Para num1 en el número 2, la segunda matriz para el siguiente número más alto 3.
Para num1 en las figuras 4, la segunda matriz es no siguiente número más grande, y por lo tanto la salida 1.
nota:

nums1 y nums2 todos los elementos son únicos.
nums1 y nums2 tamaño de la matriz no es más de 1.000.

 

【original】

Ideas: considerar cada elemento num2 nums1 en posición, detrás de la posición de selección de rebanada, para encontrar un mayor valor que el primer elemento del bucle

clase de soluciones:
     def nextGreaterElement (auto, nums1: Listado [int], nums2: Listado [INT]) -> Lista [INT]: 
        DIC = {} 
        pila = []
         para i, j en la enumeración (nums2): 
            DIC [j ] = -1
             para k en nums2 [i + 1 :]:
                 si k> j: 
                    DIC [j] = k
                     descanso 
        para p en nums1:
             si p en nums2:
                stack.append (DIC [p]) 
            otra cosa : 
                stack.append ( -1 )
         de retorno pila
original

【potenciar】

Ideas: mantener una pila monótona, cuando se atraviesa nums2, si la pila no está vacía, y un nuevo elemento es mayor que un elemento, el nuevo elemento como elementos existentes de los próximos aumento de la pila Todos los elementos, es decir, la determinación de un nuevo elemento es mayor que el último elemento de la pila, el resultado es positivo, entonces la pila, bucle continuo hasta que esté vacía, cada vez que se añada un diccionario nuevo valor. Si es mayor que el último elemento de la pila, la pila. Nums1 resultado final correspondiente al valor tomado del diccionario, si no hay retorno -1

clase Solución:
     def nextGreaterElement (auto, nums1: Listado [int], nums2: Listado [int]) -> Lista [int]: 
        DIC = {} 
        pila = []
         para i en nums2:
             mientras pila y pila [-1] < i: 
                DIC [stack.pop ()] = i 
            stack.append (i) 
        de retorno [dic.get (i, -1) para i en nums1]
Potenciar

 

Supongo que te gusta

Origin www.cnblogs.com/akassy/p/12632134.html
Recomendado
Clasificación