reihe Schlüsselwort

Fehlende Zahl in einer linearen Zahlenreihe finden

reihe suche Algorithmus Array Java

// 13 fehlt int[] zahlenreihe = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16}; Es gilt die fehlende Zahl herauszukriegen. Um das zu tun, gehen wir wie folgt vor. Wir nutzen die Gauss'sche Summenformel. Man sagt, dass Gauss in der Schule die Zahlen 1 bis 100 addieren sollte. Als er viel früher fertig wurde, war der Lehrer so erstaunt, dass er fragte, wie er das in so einer kurzen Zeit lösen konnte. Gauss' Antwort war einfach. Er bildete die Summe von der ersten und der letzten Zahl und multiplizierte sie dann mit 50. Also: 1 + 100 = 101 2 + 99 = 101 3 + 98 = 101 Folglich: 101 * 50 = 5050 Die allgemeine Formel von der Errungenschaft Gauss lautet: n * (n + 1) / 2 Genau diese Erkenntnis nutzen wir bei der Suche nach der fehlenden Zahl. Denn wir können damit sicherstellen, dass die Differenz der mittels der Formel berechneten Summe und der berechneten Summe aus dem Array der gesuchten Zahl entspricht. 1) n * (n + 1) / 2 2) Die Summe aller Zahlen in der Reihe. 3) fehlende Zahl = 1) - 2) Das heißt, das ist unsere Referenzsumme. Wenn eine Addition nicht dieser Zahl entspricht, fehlt da etwas. int[] zahlenreihe = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16}; int mittel = ((zahlenreihe.length + 1) * ((zahlenreihe.length + 1) + 1)) / 2; int summeAllerZahlen = Arrays.stream(zahlenreihe).sum(); System.out.println(zahlenreihe.length); System.out.println("Die fehlende Zahl ist " + (mittel - summeAllerZahlen)); Das ist die Lösung in Java 8. In Java 7 müsste man mit einer foreach-Schleife durch das Array iterieren. Puuh, das ganze Schreiben hat mich doch sehr angestrengt. Guckt nicht so erstaunt: Ihr habt 10 Finger, ich dagegen 2 Pfoten. Ich gehe mal an mein Napf, um zu schauen, welche Köstlichkeiten serviert wurden. Mahlzeit! Itchy

20. August 2016 13:41

Itchy in Itchy programmiert