Avez-vous déjà voulu comparer la somme de chaque élément avec la valeur que vous avez spécifiée lorsque vous aviez deux listes? Par exemple
[-1, 3, 8, 2, 9, 5] [4, 1, 2, 10, 5, 20]
Supposons que vous ayez deux listes.
À ce moment, il est examiné si une valeur spécifique peut être exprimée par la somme de deux éléments sélectionnés dans chaque liste.
Si une valeur particulière est 25 et que vous sélectionnez (-1, 4), le total est 3, ce qui est différent. Dans ce cas, seul (5, 20) est correct. Une vidéo YouTube (voir URL ci-dessous) a montré comment résoudre ce problème. Cette fois, j'ai écrit la méthode en Python.
J'ai programmé trois solutions à partir des méthodes introduites. Les valeurs à comparer sont ~~ 24, 25, 26 ~~ 23, 24, 25 (corrigé le 13 décembre 2019).
Le premier est de savoir comment ajouter tous les éléments ensemble.
Brute-force.py
#liste
A = [-1, 3, 8, 2, 9, 5]
B = [4, 1, 2, 10, 5, 20]
#Valeur que vous souhaitez comparer
target = 24
#Force brute
for i in A:
for j in B:
if target - 1 <= (i + j) <= target + 1:
print(str(i) + "Quand" + str(j) + "Est une paire.")
La méthode suivante consiste à rechercher le contenu de la liste, puis à comparer.
linear.py
#liste
A = [-1, 3, 8, 2, 9, 5]
B = [4, 1, 2, 10, 5, 20]
#Valeur que vous souhaitez comparer
target = 24
#Sélection linéaire
for i, v in enumerate(B):
if target - 1 - v in A:
index = A.index(target - 1 -v)
print(str(A[index]) + "Quand" + str(v) + "Est une paire.")
if target - v in A:
index = A.index(target - v)
print(str(A[index]) + "Quand" + str(v) + "Est une paire.")
if target + 1 - v in A:
index = A.index(target + 1 - v)
print(str(A[index]) + "Quand" + str(v) + "Est une paire.")
Enfin, comment créer une matrice. Les valeurs à comparer sont 12, 13, 14.
Matrix.py
#Création de matrice
import numpy as np
#élément
A = np.array([7, 4, 1, 10])
B = np.array([4, 5, 8, 7])
#Trier les éléments par ordre croissant
A.sort()
B.sort()
target = 13
#Tableau l'ajout de tous les éléments
array = np.array([i+j for i in A for j in B]).reshape((len(A), len(B)))
#Gamme cible
column_start = 0 #0
column_end = array.shape[1] #4
#chercher
for j in reversed(range(array.shape[0])):
#Gamme supérieure
for i in range(column_start, column_end):
if array[i][j] >= target - 1:
column_start = i
break
print(str(A[i]) + "Quand" + str(B[j]) + "Est une paire.")
J'ai appris à résoudre un problème avec moins de calculs.
Pour être honnête, je ne savais pas comment utiliser la dernière méthode en raison d'un manque d'étude, J'aimerais continuer à apprendre la programmation. Merci pour votre visite.
5 conseils de résolution de problèmes pour résoudre les questions d'entrevue de codage (lien vers la vidéo YouTube)
Recommended Posts