题目大意:判断一个整数num是不是4的指数,不用循环和递归的情况下。
思路:(借鉴)
4指数的整数的二进制表示只有1个1.其他全为0,于是num&(num-1)=0
4^n可以分解为3*(4^0+4^1+4^2...+4^(n-1)),于是(num-1)%3=0,貌似这一步可以更优化,采用位运算代替取模。
code:
bool isPowerOfFour(int num) {
return num > 0 && (num & (num - 1)) == 0 && (num - 1) % 3 == 0;
}
本文介绍了一种高效判断整数是否为4的幂的方法,利用位运算的特性,通过三个步骤实现:验证num大于0、确保二进制表示中只有一个1以及通过位运算替代取模操作检查(num-1)%3是否等于0。
748

被折叠的 条评论
为什么被折叠?



