326. Power of Three
Leetcode 問題: 326. Power of Three
Categories:
題目
Given an integer n, return true if it is a power of three. Otherwise, return false.
An integer n is a power of three, if there exists an integer x such that n == 3x.
傳入一個整數 n
,如果是 3 的次方(3^x),則回傳 true
,不是的話回傳 false
Example
Input: n = 27
Output: true
Input: n = 0
Output: false
Input: n = 9
Output: true
演算法
1. 判斷是否能被 3 整除
假如檢查的數字無法被 3 整除
,那他一定不是 3 的因數,直接回傳 false
2. 除以 3 繼續檢查
有可能這個數字是 3 的因數,但不是 3 的次方數,所以除以 3 後繼續檢查
3. 檢查最後數字是否被 3 除完了
如果最後檢查的數字是 1(3/3=1)
,表示被 3 整除完了,那這個是 3 的次方數,回傳 true
假如不是 1
的話回傳 false
答案
JavaScript
function isPowerOfThree(checkNumber) {
while (checkNumber >= 3) {
if (checkNumber % 3 != 0) {
// 假如檢查的數字無法被 3 整除,那他一定不是 3 的因數,直接回傳 false
return false;
}
// 除以 3,繼續檢查
checkNumber = checkNumber / 3;
}
var isPowerOfThreeResult = false;
if (checkNumber == 1) {
// 如果最後檢查的數字是 1(3/3=1),表示被 3 整除完了,那這個是 3 的次方數
isPowerOfThreeResult = true;
}
return isPowerOfThreeResult;
}
TypeScript
function isPowerOfThree(checkNumber: number): boolean {
while (checkNumber >= 3) {
if (checkNumber % 3 != 0) {
// 假如檢查的數字無法被 3 整除,那他一定不是 3 的因數,直接回傳 false
return false;
}
// 除以 3,繼續檢查
checkNumber = checkNumber / 3;
}
let isPowerOfThreeResult = false;
if (checkNumber == 1) {
// 如果最後檢查的數字是 1(3/3=1),表示被 3 整除完了,那這個是 3 的次方數
isPowerOfThreeResult = true;
}
return isPowerOfThreeResult;
};