Heim > Backend-Entwicklung > PHP-Problem > 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

醉折花枝作酒筹
Freigeben: 2023-03-11 13:50:01
Original
1552 Leute haben es durchsucht

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
Nach dem Login kopieren

example 2:

输入:14
输出:False
Nach dem Login kopieren

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);
    }}
Nach dem Login kopieren

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))。
Nach dem Login kopieren

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;
    }}
Nach dem Login kopieren

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;
    }}
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage