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;
};