题目描述
题目来源
思路解析
这个题一看就知道: 如果一个数满足条件,那么他在三进制下每一位要么0,要么1。例如:12(110 -> 1×3^2 + 1×3^1 + 0),那么可以分为两种思路:
- 循环相减:利用循环减掉3的幂,判断最终结果是否为0。
- 利用
String.prototype.toString(radix)将其转换为3进制数。
AC代码
// 思路1
/**
* @param {number} n
* @return {boolean}
*/
var checkPowersOfThree = function (n) {
let base = 1;
while (base * 3 <= n) {
base *= 3;
}
while (n && base) {
if (n >= base) {
n -= base;
if (n >= base) {
return false;
}
}
base /= 3;
}
return true;
};
// 思路2
var checkPowersOfThree = function(n) {
const str = n.toString(3);
for(const char of str) {
if(char === '2') {
return false;
}
}
return true;
};
总结
思路与之类似的题目有:
简单自我介绍
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情