題目描述
難度級別:簡單
給定一個整數(shù)抛腕,寫一個函數(shù)來判斷它是否是 3 的冪次方堤尾。如果是肝劲,返回 true ;否則郭宝,返回 false 辞槐。
整數(shù) n 是 3 的冪次方需滿足:存在整數(shù) x 使得 n == 3x
示例 1:
輸入:n = 27
輸出:true
示例 2:
輸入:n = 0
輸出:false
示例 3:
輸入:n = 9
輸出:true
示例 4:
輸入:n = 45
輸出:false
提示:
-231 <= n <= 231 - 1
進(jìn)階:
你能不使用循環(huán)或者遞歸來完成本題嗎?
解題思路
迭代
與2的冪算法類似粘室,這里連續(xù)對數(shù)n模3催蝗,若不為0,終止循環(huán)育特,判斷數(shù)n是否為1,若為1則 返回true先朦,否則false缰冤。
const isPowerOfThree = function(n) {
if (n < 1) return false
while(n % 3 === 0) n /= 3
return n === 1
};
時間復(fù)雜度:O(log n)
空間復(fù)雜度:O(1)
題目來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/power-of-three