Angenommen, ein Array sortiert ist, wie würden Sie 1, 2 und 3 fehlende Zahlen in einem Array der ersten N natürlichen Zahlen finden?Finden Sie 1, 2, 3 fehlende Zahlen in einem Array von ersten N natürlichen Zahlen
Wieder unter der Annahme das Array sortiert ist, wird der folgende Code funktioniert ein Wert für die Rückgabe, die (aufgrund der return
Anweisung)
function findMissingNumbers(array) {
for (var i = 0; i < array.length; i++) {
if (array[i] != (i + 1)) {
return i + 1;
}
}
return 'no missing numbers found';
}
var missingArr = [1, 3, 4, 5, 6, 7];
console.log(findMissingNumbers(missingArr));
ich viele Antworten haben gesehen, fehlt, die das gleiche tun (Finden Sie eine fehlender Wert), indem Sie die Summe und die erwartete Summe nehmen und den fehlenden Wert finden, indem Sie die Summe von der erwarteten Summe subtrahieren, jedoch wird auch dies nur einen fehlenden Wert finden.
Ich weiß, dass dieser Code nicht funktionieren wird, indem ich i benutze, wie ich bin-- Ich habe versucht, es zu schreiben, indem ich die fehlenden Werte in ein neues Array schiebe, wenn arr [i]! = I + 1, aber auch dies wird Geben Sie nur den korrekten Wert für den ersten fehlenden Wert zurück.
Wie würden Sie dieses Problem angehen?
könnten Sie den Rückgabetyp Array ändern und überdenken Sie Ihre Bedingung – fafl
Ich glaube, Sie hier sind durch, wenn seine eine sortierte Reihe von natürlichen Zahlen unter der Annahme; a [i] == i bedeutet, dass wir in keinem Fall auf eine fehlende Nummer gestoßen sind. Um dies optimal zu machen, würde ich eine binäre Suche in Betracht ziehen, indem ich zum ersten Mal a [i]! = I die fehlende Nummer dort identifiziere und dann die Suche fortsetze (du müsstest deine Suchkriterien ändern, weil du anders bist a [i] und i variieren je nachdem, wo Sie sich in einem Array befinden). Mit einer b-Suche würde es so aussehen, dass Sie nicht jeden Gegenstand überprüfen müssen. Für Ihre ausdrückliche Frage - ich würde nur den Rückgabetyp ändern – Assaf
Warum würde das Drücken der fehlenden natürlichen Zahlen zu einem Array nur "den richtigen Wert für den ersten Wert zurückgeben"? Was bedeutet es überhaupt? – nbro