heute hörte ich von dieser Web site, die codility genannt wird, in der ein Benutzer verschiedene programmierenprüfung geben kann, um ihre Code-Leistung zu überprüfen.zunehmende Codeleistung von codility
Als ich anfing, sie schenkte mir dieser Probe Test,
Aufgabenbeschreibung Ein kleiner Frosch will auf die andere Seite der Straße bekommen. Der Frosch befindet sich derzeit an Position X und möchte eine Position größer oder gleich Y erreichen. Der kleine Frosch springt immer einen festen Abstand, D. Zählen Sie die minimale Anzahl von Sprüngen, die der kleine Frosch ausführen muss sein Ziel.
Schreibe eine Funktion:
class Solution { public int solution(int X, int Y, int D); }
, die, da drei ganzen ZahlenX
,Y
undD
, die minimale Anzahl von Sprüngen von PositionX
zu einer Position, die gleich oder größer alsY
zurückgibt.Zum Beispiel gegeben:
X = 10
Y = 85
D = 30
die Funktion3
zurückkehren soll, weil der Frosch wird wie folgt angeordnet werden:nach dem ersten Sprung, an Position 10 + 30 = 40
nach dem zweiten Sprung, bei Position 10 + 30 + 30 = 70
nach dem dritten Sprung, an Position 30 + 10 + 30 + 30 = 100
annehmen, daß: X, Y und D ganze Zahlen sind im Bereich
[1..1,000,000,000]; X ≤ Y. Komplexität: erwartete Worst-Case-Zeit
Komplexität ist O (1); Die erwartete Worst-Case-Raumkomplexität ist O (1).
Die Frage war recht einfach und es hat mich wie 2 Minuten die Lösung zu schreiben, die folgende ist,
class Solution {
public int solution(int X, int Y, int D) {
int p = 0;
while (X < Y){
p++;
X = X + D;
}
return p;
}
}
das Testergebnis zeigt jedoch, dass die Leistung meiner Code ist nur 20%
und ich erzielte nur 55%
,
Hier ist der Link führt, https://codility.com/demo/results/demo66WP2H-K25/
Das war so einfach Code, wo ich gerade eine einzige while
Schleife verwendet habe, wie könnte es möglicherweise viel schneller machen?
eine Division verwenden? Sie müssen 2389 Meter gehen. Jeder Schritt, den Sie machen, ist 1 Meter. Wie viele Schritte benötigen Sie? –
Aufbauend auf dem Kommentar von @JB werden Sie gefragt, wie oft D in Y-X geht (aufgerundet, wenn noch ein Rest übrig ist). – kgh
In C: zurück (y-x)/d + ((y-x)% d! = 0); – fukanchik