GOOGLE ADS

Samstag, 16. April 2022

Kleinste Ganzzahl, die nicht im Array vorhanden ist

Schreiben Sie eine Funktion:

Funktionslösung($A);

das bei einem Array A von N ganzen Zahlen die kleinste positive ganze Zahl (größer als 0) zurückgibt, die nicht in A vorkommt.

Wenn beispielsweise A = [1, 3, 6, 4, 1, 2] ist, sollte die Funktion 5 zurückgeben.

Für ein weiteres Beispiel, bei dem A = [1, 2, 3] gegeben ist, sollte die Funktion 4 zurückgeben.

Bei A = [−1, −3] sollte die Funktion 1 zurückgeben.

Annehmen, dass:

N eine ganze Zahl im Bereich [1..100.000] ist; Jedes Element von Array A ist eine ganze Zahl im Bereich [−1.000.000..1.000.000]. Komplexität:

erwartete Zeitkomplexität im ungünstigsten Fall ist O(N); Die erwartete Platzkomplexität im schlimmsten Fall ist O(N) über den Eingabespeicher hinaus (ohne den für Eingabeargumente erforderlichen Speicher zu zählen). Elemente von Eingabearrays können geändert werden.

Mein Versuch:

function solution($A) {
$b=min($A);
$c=max($A);
for($i=$b; $i<=$c;$i++){
if($b>0){
if($b!=1){
return 1;
}else{
for($x=1;$x<=$c;$x++){
$b=1;
$b=$b+$x;
if(!in_array($b,$A)){
return $b;
}
}
}
}else if($b<0 && $c<0){
return 1;
}else if($b<0 && $c>0){
//was working on this case..
}
//echo $test.'<br>';
}
}

Dieser Versuch ist laut Ergebnis zu 40 % richtig.


Lösung des Problems

Sie sind sich nicht sicher, was Sie in Ihrem Code tun wollten, aber beginnen Sie einfach bei 1, überprüfen und erhöhen Sie. Die Schleife wird beendet, sobald $inicht im Array gefunden wird:

function solution($A) {
for($i=1; in_array($i, $A); $i++);
return $i;
}

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...