. 1 Importación Time 2 3. # Método a: . 4 clase Solución: . 5 DEF twoSum (Self, los nums, objetivo): . 6 para I en Rango (len (los nums)): # lista primer ciclo . 7 para J en Rango (len ( los nums) -1 ): # anuncio debe ser el segundo ciclo del primer ciclo de lo digital excluidos 8. SI los nums [i] == los nums [J]: # resultado no es el mismo número . 9 Pass 10 elif los nums [I ] + los nums [J] == objetivo: . 11 de retorno J, I 12 es la otra cosa : 13 es Continuar 14 15 # Método dos: 16 clases Solución: . 17 DEF twoSum (Ser, el nums, objetivo): 18 es para que en el rango (len (los nums)): . 19 SI objetivo -nums [I] en los nums y I = nums.index (objetivo! - los nums [I]): # el mismo elemento si la diferencia, el índice de retornos de dos elementos y no en la lista 20 es el retorno [I, nums.index (objetivo - los nums [I])] 21 es la otra cosa : 22 es Continuar 23 es 24 # método de tres 25 clases Solución: 26 DEF twoSum (Ser, nums, objetivo): 27 = DIC {} 28 para I, NUM en la enumerate (los nums): # una lista de todos los elementos de acuerdo con el primer valor de índice, se coloca el número en la tecla de modo de diccionario. 29 DIC [NUM] = I 30 para I, NUM en la enumerate (los nums): 31 es J = DIC [Destino- NUM] diferencia # clave es buscar en el diccionario no hay un valor correspondiente. 32 SI ! I = J y J ES No Ninguno: 33 es el retorno [i, j] 34 es 35 T1 = time.perf_counter () 36 Solución = Solución () 37 [ A = solution.twoSum ([2,7,11,15, 2,6,98,23], 13) 38 t2 = time.perf_counter () 39 de impresión (a) 40 de impresión (t2-t1)
Uno de los métodos más convencionales de pensar, es decir, bucles anidados, constantemente lista de variables. El segundo método utiliza un bucle, lo que reduce el valor de cada ciclo de vista de destino está en la lista. Método tres utiliza el diccionario y mejorar la eficiencia