326. 3的冪(Python)

題目

難度:★☆☆☆☆
類型:數(shù)學(xué)

給定一個整數(shù),寫一個函數(shù)來判斷它是否是 3 的冪次方。

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

示例

示例 1:
輸入: 27
輸出: true

示例 2:
輸入: 0
輸出: false

示例 3:
輸入: 9
輸出: true

示例 4:
輸入: 45
輸出: false

解答

這道題跟【題目231. 2的冪】屬于同一個類型,遞歸和迭代寫法可以直接參考該題目,這里為大家介紹一種時間和空間復(fù)雜度均為O(1)的解法。

我們知道,輸入是32位有符號整數(shù),范圍是[-231~231-1],即[-2147483648~2147483647],在這個范圍內(nèi)3的冪是有限的,而且最大的是3^19=1162261467,這個最大的3的冪除以其他任何一個3的冪,余數(shù)一定是0,而除以任何一個不是3的冪的數(shù),則余數(shù)一定不為零,根據(jù)這個原理,我們就可以解決3的冪的判別問題。

class Solution(object):
    def isPowerOfThree(self, n):
        """
        :type n: int
        :rtype: bool
        """
        return n > 0 and 3 ** 19 % n == 0

如有疑問或建議,歡迎評論區(qū)留言~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容