LeetCode 第 326 題 (Power of Three)
LeetCode 第 326 題 (Power of Three)
Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?
這道題的常規的思路是不停的除以 3,如果能除盡就說明是 power of three。下面是程式碼:
class Solution {
public:
bool isPowerOfThree(int n) {
if(n <= 0) return false;
do
{
if( !(n & 1) ) return false;
if( n == 1 ) return true;
if(n % 3) return false;
n = n / 3;
}while(n > 0);
return false;
}
};
其實所有這種型別的題還有一個統一的簡便的做法。利用的是計算機中整數所能表示的數字是有限的這個特點。 自然數中
3^N
有無窮多個。但是可以用 int 型別表示的卻不多。這其中最大的那個是 1162261467。其餘的 3^N
型的數 x
都是這個數的約數。也就是說 1162261467 可以被 x
整除。
按照這個思路,有下面的程式碼:
class Solution {
public:
bool isPowerOfThree(int n) {
if(n <= 0) return false;
return 1162261467 % n == 0;
}
};
相關文章
- Leetcode 231 Power of TwoLeetCode
- LeetCode題解第122題LeetCode
- Leetcode第1~10題LeetCode
- LeetCode刷題之第701題LeetCode
- Leetcode 231. Power of TwoLeetCode
- 326
- LeetCode 259. Three Sum SmallerLeetCode
- [leetcode 第 400 場周賽]題解LeetCode
- leetcode的第9題:迴文數LeetCode
- KMP演算法(Leetcode第28題)KMP演算法LeetCode
- LeetCode 第 86 號問題:分割連結串列LeetCode
- Leetcode 第136場周賽解題報告LeetCode
- 填空題回答(Power Query)
- LeetCode第 146 號問題: LRU 快取機制LeetCode快取
- 科技愛好者週刊(第 326 期):世界沒有那麼多財富
- JavaScript實現-LeetCode刷題-【對稱二叉樹】-第101題!!!JavaScriptLeetCode二叉樹
- leetcode演算法題解(Java版)-14-第k小數問題LeetCode演算法Java
- LeetCode第 543 題:二叉樹的直徑(C++)LeetCode二叉樹C++
- LeetCode 之 JavaScript 解答第20題 —— 有效的括號(Valid Parentheses)LeetCodeJavaScript
- LeetCode 之 JavaScript 解答第169題 —— 求眾數 I(Majority Element)LeetCodeJavaScript
- LeetCode第215場周賽LeetCode
- LeetCode 之 JavaScript 解答第69題 —— X 的平方根(Squrt(x))LeetCodeJavaScript
- LeetCode第4題:尋找兩個有序陣列的中位數LeetCode陣列
- leetcode 第 217 場周賽(vivo)LeetCode
- 【326】PIL 截圖及圖片識別
- LeetCode問題LeetCode
- 二進位制方式解決 power 問題
- LeetCode 之 JavaScript 解答第150題 —— 逆波蘭表示式求值(Evaluate Reverse Polish Notation)LeetCodeJavaScript
- LeetCode 之 JavaScript 解答第141題 —— 環形連結串列 I(Linked List Cycle I)LeetCodeJavaScript
- LeetCode 刷題—樹LeetCode
- LeetCode刷題 堆LeetCode
- [leetcode 題解] 849LeetCode
- leetcode每日一題LeetCode每日一題
- leetcode第一題LeetCode
- Leetcode 全套題解LeetCode
- leetcode 455題 javaLeetCodeJava
- LeetCode刷題整理LeetCode
- leetcode刷題(一)LeetCode
- leetcode小題解析LeetCode