
LeetCode
題目: 3的冪
描述:給定一個整數(shù),寫一個函數(shù)來判斷它是否是 3 的冪次方。
案例1:
輸入: 27
輸出: true
示例 2:
輸入: 0
輸出: false
案例 3:
輸入: 9
輸出: true
案例 4:
輸入: 45
輸出: false
方案一:使用循環(huán),當(dāng)整數(shù)除3的余數(shù)不為0時,不是3的冪,整數(shù)一直除3,最后值為1,則該整數(shù)是3的冪
代碼一:
func isPowerOfThree(_ n: Int) -> Bool {
if n < 1 {
return false
}
if n == 1 {
return true
}
var s = n
while s > 1 {
if s % 3 != 0 {
return false
}
s = s / 3
}
return true
}
執(zhí)行用時320ms
方案二:3的冪有個特性,他的約數(shù)必是3的冪,所以可以求一個不溢出情況下的最大3的冪整數(shù)去除所需要判斷的值,如果余數(shù)為0,則是3的冪
代碼二:
return n > 0 && (Int(pow(Double(3), Double(33))) % n == 0)
為啥是33、、、嗯,自己試試就知道了。。。、、、然后這個執(zhí)行用時,有時300多,有時200多、、、我也是不知道為什么

進(jìn)階執(zhí)行用時