leetcode 342. Power of Four
没想出来不用循环的。记录下。
如果是2的次方,必有num & (nums - 1)
bool isPowerOfFour(int num) { if (num < 1) return false; if (num & (num - 1)) return false; // 排除不是2的倍数 if (num & 0x55555555) return true; // 排除不是4的倍数,此时num是2的次方 return false; }
或者第二步排除,直接(num - 1) % 3为0也可以,如果是4的倍数,减1后必能被3整除,从二进制角度考虑下即可。
不建议用对数,涉及浮点数,精度问题,见:https://discuss.leetcode.com/topic/33536/a-summary-of-all-solutions-new-method-included-at-15-30pm-jan-8th
【本文章出自博客园willaty,转载请注明作者出处,误差欢迎指出~】