O(1) Check Power of 2 - LintCode
examination questions
Using O(1) time to check whether an integer n is a power of 2
.
Example
For n=4
, return true
;
For n=5
, return false
;
Challenge
O(1) time
解题代码
class Solution { public: /* * @param n: An integer * @return: True or false */ bool checkPowerOf2(int n) { int t; int b; if (n == 1 || n == 2){ return true; } if (n <= 0){ return false; } while (true){ t = n / 2; b = n % 2; if (b == 0){ if (t == 2){ return true; } else{ n = t; } } else{ return false; } } } };
作者:Tab Weng
Email:hlwyfeng(Geek)gmail.com 请将(Geek)换成@
出处:博客园 Tab Weng的博客:http://www.cnblogs.com/hlwyfeng
声明:本文采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议,允许重新传播和转载分享,但必须在正文显著位置注明署名及原文来源。
Email:hlwyfeng(Geek)gmail.com 请将(Geek)换成@
出处:博客园 Tab Weng的博客:http://www.cnblogs.com/hlwyfeng
声明:本文采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议,允许重新传播和转载分享,但必须在正文显著位置注明署名及原文来源。