Wollten Sie schon immer die Summe jedes Elements mit dem Wert vergleichen, den Sie bei zwei Listen angegeben haben? Zum Beispiel
[-1, 3, 8, 2, 9, 5] [4, 1, 2, 10, 5, 20]
Angenommen, Sie haben zwei Listen.
Zu diesem Zeitpunkt wird geprüft, ob ein bestimmter Wert durch die Summe von zwei aus jeder Liste ausgewählten Elementen ausgedrückt werden kann.
Wenn ein bestimmter Wert 25 ist und Sie (-1, 4) auswählen, beträgt die Summe 3, was unterschiedlich ist. In diesem Fall ist nur (5, 20) korrekt. Ein YouTube-Video (siehe URL unten) zeigte, wie dieses Problem gelöst werden kann. Diesmal habe ich die Methode in Python geschrieben.
Ich habe drei Lösungen aus den eingeführten Methoden programmiert. Die zu vergleichenden Werte sind ~ ~ 24, 25, 26 ~ ~ 23, 24, 25 (korrigiert am 13. Dezember 2019).
Das erste ist, wie alle Elemente zusammengefügt werden.
Brute-force.py
#aufführen
A = [-1, 3, 8, 2, 9, 5]
B = [4, 1, 2, 10, 5, 20]
#Wert, den Sie vergleichen möchten
target = 24
#Rohe Gewalt
for i in A:
for j in B:
if target - 1 <= (i + j) <= target + 1:
print(str(i) + "Wann" + str(j) + "Ist ein Paar.")
Die nächste Methode besteht darin, den Inhalt der Liste zu durchsuchen und dann zu vergleichen.
linear.py
#aufführen
A = [-1, 3, 8, 2, 9, 5]
B = [4, 1, 2, 10, 5, 20]
#Wert, den Sie vergleichen möchten
target = 24
#Lineare Auswahl
for i, v in enumerate(B):
if target - 1 - v in A:
index = A.index(target - 1 -v)
print(str(A[index]) + "Wann" + str(v) + "Ist ein Paar.")
if target - v in A:
index = A.index(target - v)
print(str(A[index]) + "Wann" + str(v) + "Ist ein Paar.")
if target + 1 - v in A:
index = A.index(target + 1 - v)
print(str(A[index]) + "Wann" + str(v) + "Ist ein Paar.")
Schließlich, wie man eine Matrix erstellt. Die zu vergleichenden Werte sind 12, 13, 14.
Matrix.py
#Matrixerstellung
import numpy as np
#Element
A = np.array([7, 4, 1, 10])
B = np.array([4, 5, 8, 7])
#Sortieren Sie die Elemente in aufsteigender Reihenfolge
A.sort()
B.sort()
target = 13
#Tabelle die Hinzufügung aller Elemente
array = np.array([i+j for i in A for j in B]).reshape((len(A), len(B)))
#Zielbereich
column_start = 0 #0
column_end = array.shape[1] #4
#Suche
for j in reversed(range(array.shape[0])):
#Oberer Bereich
for i in range(column_start, column_end):
if array[i][j] >= target - 1:
column_start = i
break
print(str(A[i]) + "Wann" + str(B[j]) + "Ist ein Paar.")
Ich habe gelernt, ein Problem mit weniger Rechenaufwand zu lösen.
Um ehrlich zu sein, wusste ich wegen mangelnder Studien nicht, wie man die letzte Methode anwendet. Ich möchte weiterhin Programmieren lernen. Danke für Ihren Besuch.
5 Tipps zur Problemlösung beim Knacken von Coding-Interviewfragen (Link zum YouTube-Video)