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 $i
nicht im Array gefunden wird:
function solution($A) {
for($i=1; in_array($i, $A); $i++);
return $i;
}
Keine Kommentare:
Kommentar veröffentlichen