題目:

官網題目連結

根據題目敘述,會給三個變數,起點是 X,終點是 Y,每次移動距離是 D,需求出最少需要幾次 D 才能剛好抵達或超過終點。
題外話,為甚麼官方是寫 FrogJmp 而不是 FrogJump 啊。
例如輸入 X=10, Y=85, D=30,答案應為 3。

  • X, Y, D 都是範圍 [1~1000000000] 的整數。
  • X <= Y。

解法:

既然題目都歸類在 TimeComplexity 裡了,感覺就是注重效能的題目。
實際上也沒錯,看起來就是想騙人去用迴圈去每次減 D,因為這樣在 D 為 1 的時候你的時間複雜度就會提高到 Y-X。
而其實你根本只需要用 (Y-X)/D 再無條件進位就能達到答案,時間複雜度 O(1)。
根本就是小學數學題。

以前在面試時有遇過類似題目,面試官是說希望知道你在看起來秒殺的題目下會不會忽略掉甚麼才是最佳解。

  • 時間複雜度 O(1)
  • 空間複雜度 O(1)

PHP 程式碼: