一道投機(jī)取巧的算法題
2019-05-04 21:25 作者:吳師兄學(xué)算法 | 我要投稿

取巧一時(shí)爽,一直取巧一直爽~
3 的冪
題目來(lái)源于 LeetCode 上第 326 號(hào)問(wèn)題:3 的冪。題目難度為 Easy,目前通過(guò)率為 43.5% 。
題目描述
給定一個(gè)整數(shù),寫一個(gè)函數(shù)來(lái)判斷它是否是 3 的冪次方。
示例 1:
輸入:?27
輸出:?true
示例 2:
輸入:?0
輸出:?false
進(jìn)階:
你能不使用循環(huán)或者遞歸來(lái)完成本題嗎?
題目解析
正常的思路是不停地去除以 3,看最后的迭代商是否為 1。這種思路的代碼使用到了循環(huán),逼格不夠高。
這里取巧的方法 用到了數(shù)論的知識(shí):3 的冪次的質(zhì)因子只有 3。
題目要求輸入的是 int 類型,正數(shù)范圍是 0 - 2^31,在此范圍中允許的最大的 3 的次方數(shù)為 3^19 = 1162261467 ,那么只要看這個(gè)數(shù)能否被 n 整除即可。
代碼實(shí)現(xiàn)
class?Solution?{
????public?boolean?isPowerOfThree(int?n)?{
?????????return?n?>?0?&&?1162261467?%?n?==?0;
????}
}
標(biāo)簽: