Heim  >  Artikel  >  Backend-Entwicklung  >  So ermitteln Sie, ob es sich in PHP um eine gültige perfekte Quadratzahl handelt

So ermitteln Sie, ob es sich in PHP um eine gültige perfekte Quadratzahl handelt

醉折花枝作酒筹
醉折花枝作酒筹Original
2021-07-13 16:00:011433Durchsuche

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.

So ermitteln Sie, ob es sich in PHP um eine gültige perfekte Quadratzahl handelt

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn