Schreiben Sie bei einer positiven Ganzzahl num eine Funktion, die „True“ zurückgibt, wenn num eine perfekte Quadratzahl ist, andernfalls „False“. Was sollen wir zu diesem Zeitpunkt tun? Heute führt Sie der Herausgeber durch das Buch und Sie können bei Bedarf darauf zurückgreifen.
Bei einer positiven ganzen Zahl num schreiben Sie eine Funktion, die True zurückgibt, wenn num eine perfekte Quadratzahl ist, andernfalls gibt sie False zurück.
Hinweis: Verwenden Sie keine integrierten Bibliotheksfunktionen wie sqrt.
EXample 1:
输入:16 输出:True
example 2:
输入:14 输出:False
olution Idee 1
php kann die POW -Funktion nicht verwenden, die SAO -Operation beträgt ** 0,5 auf diese Weise, multiplizieren Sie sich mit 0,5 -mal mit Php5.6.0 Es beginnt mit dem gleichen Effekt wie die Stammzahl.
Code
class Solution { /** * @param Integer $num * @return Boolean */ function isPerfectSquare($num) { return $num**0.5 == (int)($num**0.5); }}
Lösungsidee 2
Verwenden Sie die Eigenschaften perfekter Quadratzahlen, zum Beispiel:
1 = 1 4 = 1 + 3 9 = 1 + 3 + 5 16 = 1 + 3 + 5 + 7 25 = 1 + 3 + 5 + 7 + 9 36 = 1 + 3 + 5 + 7 + 9 + 11 .... 1+3+...+(2n-1) = (2n-1 + 1) n/2 = n* n 时间复杂度为 O(sqrt(n))。
Code
class Solution { /** * @param Integer $num * @return Boolean */ function isPerfectSquare($num) { $start = 1; while($num > 0) { $num -= $start; // 累减到最后是 0 $start += 2; // 每次 +2 保持是连续奇数 } return $num == 0; }}
Lösungsidee 3
Binäre Suche
Code
class Solution { /** * @param Integer $num * @return Boolean */ function isPerfectSquare($num) { $left = 0; $right = $num; while($left < $right) { $mid = $right - floor(($right-$left)/2); if ($mid * $mid == $num) { return true; } elseif ($mid * $mid > $num) { $right = $mid - 1; } else { $left = $mid + 1; } } return $left * $left == $num; }}
Empfohlenes Lernen: php-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob es sich in PHP um eine gültige perfekte Quadratzahl handelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!