3 的幂
迭代
-
解题思路:
- 不断地将 n 除以 3,直到 n=1;
- 如果此过程中 n 无法被 3 整除,就说明 n 不是 3 的幂;
-
复杂度:
- 时间复杂度:O(logn);
- 空间复杂度:O(1);
-
代码实现:
function isPowerOfThree(n: number): boolean { while (n !== 0 && n % 3 === 0) { n = Math.floor(n / 3); } return n === 1; };
判断是否为最大 3 的幂的约数
-
解题思路:
- 给定的 32 位有符号整数的范围内,最大的 3 的幂为 3^19 = 11622614673,只需要判断 n 是否是 3^19 的约数即可;
- 这里需要特殊判断 n 是负数或 0 的情况;
-
复杂度:
- 时间复杂度:O(1);
- 空间复杂度:O(1);
-
代码实现:
function isPowerOfThree(n: number): boolean { return n > 0 && 1162261467 % n === 0; };
打赏作者
您的打赏是我前进的动力
微信
支付宝
72.编辑距离
上一篇
评论