【LeetCode 簡單題】76-3的冪
阿新 • • 發佈:2018-11-07
宣告:
今天是第76道題。給定一個整數,寫一個函式來判斷它是否是 3 的冪次方。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除
(手動比心ღ( ´・ᴗ・` ))
正文
題目:給定一個整數,寫一個函式來判斷它是否是 3 的冪次方。
示例 1:
輸入: 27 輸出: true示例 2:
輸入: 0 輸出: false示例 3:
輸入: 9 輸出: true示例 4:
輸入: 45 輸出: false
進階:
你能不使用迴圈或者遞迴來完成本題嗎?
解法1。輸入是int,最大是2^313^19,如果輸入是3的冪,必然滿足大於0且能被3^19整除,程式碼如下。
執行用時: 184 ms, 在Power of Three的Python提交中擊敗了52.39% 的使用者
import math class Solution(object): def isPowerOfThree(self, n): """ :type n: int :rtype: bool """ return n > 0 and math.pow(3,19) % n == 0
解法2。細化一下還是用迴圈做做,對3的冪的性質有更進一步的瞭解,首先能整除3,程式碼如下。
執行用時: 180 ms, 在Power of Three的Python提交中擊敗了58.93% 的使用者
class Solution(object): def isPowerOfThree(self, n): """ :type n: int :rtype: bool """ while n%3 == 0 and n > 1: n //= 3 return n == 1
解法3。用遞迴試試,順便熟悉一下的套路。思路非常的清晰,基線條件從0-3都列舉出來了,程式碼如下。
執行用時: 176 ms, 在Power of Three的Python提交中擊敗了66.33% 的使用者
class Solution(object):
def isPowerOfThree(self,n):
if n == 0:
return False
if n == 1:
return True
if n == 2:
return False
if n == 3:
return True
if n%3 == 0 and n > 3:
return self.isPowerOfThree(n/3) # 注意這裡一定要return
else:
return False
結尾
解法1:https://blog.csdn.net/qq_34364995/article/category/7655706
解法2&解法3:LeetCode