Python :: Aufgabe #361 :: Lösung #1

2 Lösungen Lösungen öffentlich
#361

n kleinste Paarsummen als Array

Anfänger - Python von JKooP - 05.06.2021 um 16:27 Uhr
Gegeben sind 2 sortierte Arrays (arr1, arr2) gleicher oder unterschiedlicher Länge
und eine Zahl (n) welche die maximale Anzahl der kleinsten auszugebenden Paarsummen vorgibt.
Jedes Array kann 1 bis zu 10.000 Zahlen der Größe +-1.000.000 beinhalten.
Der Wert für n soll nicht weniger als 1 und nicht mehr als 1.000 betragen.

Ziel soll es sein, die n kleinsten aller möglichen Paarsummen als Array zurückzugeben.

Beispiele:

arr1 = [1,2,3]; arr2 = [2,3,7]; n = 3
Lösung: [[1,2], [1,3], [2,2]], denn [1,2], [1,3], [1,7], [2,2], [2,3], [2,7], [3,2], [3,3], [3,7]
Summen: 3, 4, 8, 4, 5, 9, 5, 6, 10 => 3, 4, 4

arr1 = [1,1,2]; arr2 = [1,2,3]; n = 2
Lösung: [[1,1], [1,1]], denn [1,1], [1,2], [1,3], [1,1], [1,2], [2,3], [2,1], [2,2], [2,3]
Summen: 2, 3, 4, 2, 3, 5, 3, 4, 5

arr1 = [1,2]; arr2 = [-5]; n = 3
Lösung: [[1,-5], [2,-5]]
Summen: -4, -3

Schreibe eine Methode/Funktion, die obige Aufgabenstellung umsetzt.
Je nach Programmiersprache könne auch Vektoren, Listen, etc. verwendet werden.

Viel Spaß
#1
vote_ok
von eisheiliger (3750 Punkte) - 17.07.2021 um 19:53 Uhr
Quellcode ausblenden Python-Code

""""
#361: n kleinste Paarsummen als Array
Gegeben sind 2 sortierte Arrays (arr1, arr2) gleicher oder unterschiedlicher Länge und eine Zahl (n) welche die maximale
Anzahl der kleinsten auszugebenden Paarsummen vorgibt.
"""


def kps(arr1, arr2, n):
    arro, arrp, arrq = [], [], []
    for i in range(0, len(arr1)):
        for j in range(0, len(arr2)):
            arro.append([arr1[i] + arr2[j], [arr1[i], arr2[j]]])
    arro = sorted(arro)
    z = min(len(arro), n)
    for i in range(0, z):
        arrp.append(arro[i][1])
        arrq.append(arro[i][0])
    print("Zahlenpaare:", arrp)
    print("Paarsummen: ", arrq)


kps([1, 2, 3], [2, 3, 7], 3)
kps([1, 1, 2], [1, 2, 3], 2)
kps([1, 2], [-5], 3)


Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben