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 326. Power of ThreeLeetCode
- 326. Power of Three--LeetCode RecordLeetCode
- 每天一道LeetCode--326. Power of ThreeLeetCode
- LeetCode 第 342 題(Power of Four)LeetCode
- LeetCode 第 231 題 (Power of Two)LeetCode
- The Power of Three - Eclipse, Tomcat, and StrutsEclipseTomcat
- Leetcode Power of TwoLeetCode
- 326
- Leetcode第1~10題LeetCode
- LeetCode題解第122題LeetCode
- LeetCode刷題之第701題LeetCode
- LeetCode 第 69 題 (Sqrt(x))LeetCode
- LeetCode 第 7 題(Reverse Integer)LeetCode
- LeetCode 第 343 題 (Integer Break)LeetCode
- LeetCode 第 66 題 (Plus One)LeetCode
- Leetcode 231 Power of TwoLeetCode
- LeetCode 259. Three Sum SmallerLeetCode
- LeetCode 第 50 題 (Pow(x, n))LeetCode
- LeetCode 第 9 題(Palindrome Number)LeetCode
- LeetCode 第 190 題 (Reverse Bits)LeetCode
- LeetCode 第 37 題 (Sudoku Solver)LeetCode
- LeetCode 第 65 題(Valid Number)LeetCode
- [leetcode 第 400 場周賽]題解LeetCode
- Leetcode 231. Power of TwoLeetCode
- KMP演算法(Leetcode第28題)KMP演算法LeetCode
- leetcode的第9題:迴文數LeetCode
- LeetCode 第 191 題 (Number of 1 Bits)LeetCode
- LeetCode 第 338 題 (Counting Bits)LeetCode
- LeetCode 第 14 題(Longest Common Prefix)LeetCode
- 填空題回答(Power Query)
- Leetcode 第136場周賽解題報告LeetCode
- LeetCode 第 125 題 (Valid Palindrome)LeetCode
- LeetCode 第 21 題 (Merge Two Sorted Lists)LeetCode
- 跟我一起刷leetCode演算法題11之 Maximum Product of Three NumbersLeetCode演算法
- LeetCode 第 86 號問題:分割連結串列LeetCode
- 每天一道LeetCode--342. Power of FourLeetCode
- LeetCode第 146 號問題: LRU 快取機制LeetCode快取
- 【LeetCode 231_整數_位運算】Power of TwoLeetCode