国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

3的冪,給定一個整數(shù),寫一個函數(shù)來判斷它是否是 3 的冪次方。如果是,返回 true ;否則,返回 false。

這篇具有很好參考價值的文章主要介紹了3的冪,給定一個整數(shù),寫一個函數(shù)來判斷它是否是 3 的冪次方。如果是,返回 true ;否則,返回 false。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題記:

給定一個整數(shù),寫一個函數(shù)來判斷它是否是 3 的冪次方。如果是,返回 true ;否則,返回 false 。

整數(shù) n 是 3 的冪次方需滿足:存在整數(shù) x 使得 n == 3^x

示例 1:

輸入:n = 27
輸出:true

示例 2:

輸入:n = 0
輸出:false

示例 3:

輸入:n = 9
輸出:true

示例 4:

輸入:n = 45
輸出:false

提示:

-2 ^ 31 <= n <= 2 ^ 31 - 1

進(jìn)階:你能不使用循環(huán)或者遞歸來完成本題嗎?

題目來源:
作者:LeetCode
鏈接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnsdi2/
來源:力扣(LeetCode)

解題方法:

自己敲的:

一:循環(huán),一直乘以3,判斷是否有等于該整數(shù)的數(shù)存在

function isPowerOfThree($n) {
   //循環(huán)
   if($n == 3 || $n == 1)
       return true;
   $start = 3;
   while($start && $start <= $n){
       $start = $start * 3;
       if($start == $n){
           return true;
       }
   }
   return false;
}

二:遞歸,一直除以3

function isPowerOfThree($n) {
   //遞歸
    if($n == 1)
        return true;
    if($n > 0 && $n % 3 == 0 && $this->isPowerOfThree($n / 3))
        return true;
    return false;
}

官方方法:(其實也就是一直乘以3)

function isPowerOfThree($n) {
    $flag = true;
    $num  = 0;
     while($flag){
         $x = pow(3,$num);	//3的num次方
         $num++;
         if($x > $n){
             $flag = false;
             return false;
         }  
         if($x == $n){
             $flag = false;
             return true;
         } 
     }   
}

其他方法:

一:一直除以3

一種最簡單的方式就是判斷n是否能夠被3整除,如果能夠被3整除就除以3,直到不能被3整除為止,最后判斷n是否等于1,代碼比較簡單,來看下

public boolean isPowerOfThree(int n) {
    if (n > 1)
        while (n % 3 == 0)
            n /= 3;
    return n == 1;
}

轉(zhuǎn)換為PHP代碼為:

function isPowerOfThree($n) {
    //一直除以3
    if($n > 1){
        while($n % 3 == 0){
            $n /= 3;
        }
    }
    return $n == 1; 
}

二:遞歸方式解決(同上面的遞歸方法,只是簡化了寫法)

還可以改為遞歸的方式,一行代碼解決

public boolean isPowerOfThree(int n) {
    return n > 0 && (n == 1 || (n % 3 == 0 && isPowerOfThree(n / 3)));
}

轉(zhuǎn)換為PHP代碼為:

function isPowerOfThree($n) {
	return $n > 0 && ($n == 1 || ($n % 3 == 0 && $this->isPowerOfThree($n / 3))); 
}

三:算術(shù)表達(dá)式計算

先來普及一波數(shù)學(xué)知識

對數(shù)的乘法法則: log(ab) = log(a) + log(b)
對數(shù)的乘法法則表明,兩個數(shù)相乘的對數(shù)等于這兩個數(shù)分別對數(shù)后的和。例如,log(10100) = log(10) + log(100) = 1 + 2 = 3。

對數(shù)的除法法則: log(a/b) = log(a) - log(b)
對數(shù)的除法法則表明,兩個數(shù)相除的對數(shù)等于這兩個數(shù)分別對數(shù)后的差。例如,log(100/10) = log(100) - log(10) =
2 - 1 = 1。

對數(shù)的冪法法則: log(a^b) = blog(a)
對數(shù)的冪法法則表明,一個數(shù)的冪的對數(shù)等于這個數(shù)的對數(shù)乘以冪的指數(shù)。例如,log(10^3) = 3log(10) = 3*1 = 3。

對數(shù)的換底公式: loga(b) = logc(b)/logc(a)
對數(shù)的換底公式表明,任意兩個底不同的對數(shù)可以用一個公共底的對數(shù)來表示。例如,log2(8) = log10(8)/log10(2) =
0.903/0.301 = 3。

public boolean isPowerOfThree(int n) {
    return (Math.log10(n) / Math.log10(3)) % 1 == 0;	
    //對照對數(shù)的換底公式
    //log3(n)
}

四:找到最大冪

題中n的范圍是 -2^31 <= n <= 2^31 - 1 ,而在這個范圍內(nèi)3的最大冪是1162261467,在比他大就超過int表示的范圍了,我們直接用它對n求余即可,過求余的結(jié)果是0,說明n是3的冪次方

public boolean isPowerOfThree(int n) {
    return (n > 0 && 1162261467 % n == 0);
}

轉(zhuǎn)換為PHP代碼為:

function isPowerOfThree($n) {
	return ($n > 0 && 1162261467 % $n == 0); 
}

方法來源:
作者:數(shù)據(jù)結(jié)構(gòu)和算法
鏈接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnsdi2/?discussion=xhUFcs
來源:力扣(LeetCode)文章來源地址http://www.zghlxwxcb.cn/news/detail-613731.html

到了這里,關(guān)于3的冪,給定一個整數(shù),寫一個函數(shù)來判斷它是否是 3 的冪次方。如果是,返回 true ;否則,返回 false。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包