86 - 4的幂
题目
给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16 输出: true
示例 2:
输入: 5 输出: false
进阶: 你能不使用循环或者递归来完成本题吗?
解答
这不和3的幂一模一样吗。。
取余
Runtime: 64 ms, faster than 90.43% of JavaScript online submissions for Power of Four.
Memory Usage: 35.8 MB, less than 100.00% of JavaScript online submissions for Power of Four.
4进制
Runtime: 68 ms, faster than 79.61% of JavaScript online submissions for Power of Four.
Memory Usage: 35.7 MB, less than 100.00% of JavaScript online submissions for Power of Four.
log
Runtime: 84 ms, faster than 16.84% of JavaScript online submissions for Power of Four.
Memory Usage: 35.6 MB, less than 100.00% of JavaScript online submissions for Power of Four.
看起来骚但跑起来慢哈哈哈😂
32位最大值
int32最大值为2147483647,因此$log_4(2147483647)=lg(2147483647)/lg(4)=15.4999999997$
换言之,int32最大的4的幂是$4^{15}=1073741824$
似乎不对?
go
Runtime: 4 ms, faster than 40.63% of Go online submissions for Power of Four.
Memory Usage: 2.1 MB, less than 100.00% of Go online submissions for Power of Four.
Runtime: 8 ms, faster than 40.63% of Go online submissions for Power of Four.
Memory Usage: 5.7 MB, less than 100.00% of Go online submissions for Power of Four.
二进制位
作者:infinity-2
32位数如果是4的幂,那么只有奇数位有且只有一个1,偶数位都是0。判断条件为与0xaaaaaaaa做与运算结果为0。(a=1010)
作者:elliotxx
Runtime: 0 ms, faster than 100.00% of Go online submissions for Power of Four.
Memory Usage: 2.1 MB, less than 100.00% of Go online submissions for Power of Four.
递归
Runtime: 60 ms, faster than 96.41% of JavaScript online submissions for Power of Four.
Memory Usage: 35.7 MB, less than 100.00% of JavaScript online submissions for Power of Four.
Last updated
Was this helpful?