[leetcode] 231.Power of Two

原创 2015年07月08日 14:37:40

题目:
Given an integer, write a function to determine if it is a power of two.

Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
题意:
判断一个数是否是2的指数倍。
思路:
考虑特殊情况n<=0,不是2的指数倍,1是的。
采用递归的方法,如果n%2!=0说明不是指数。否则递归查看n/2是不是。
以上。
代码如下:

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if(n == 0)return false;
        else if(n == 1)return true;
        else if(n % 2 != 0)return false;
        else return isPowerOfTwo(n/2);
    }
};

当然,这是最简单的思路,另外我们可以考虑一个数字组成,如果该数字大于0,并且是2的指数倍的话,那么这个数字可以表示成这样的二进制数,00000…00100…000,只有第k位上是1,其余位都是0。那么这个数字减去1之后,1到k-1位上是1,其余位是1,即00000..00011…111,所以观察可得n&(n-1) 等于0。
以上。
代码如下:
class Solution {
public:
bool isPowerOfTwo(int n) {
return (n > 0) && (n&(n-1)) == 0;
}
};

相关文章推荐

LeetCode 231. Power of Two 解题报告

LeetCode 231. Power of Two 解题报告

[231] Power of Two

求一个整数是不是2的n次方
  • camlot_
  • camlot_
  • 2016年06月25日 19:50
  • 177

算法细节系列(2):231.Power of Two && Three

算法细节系列(2):231.Power of Two && Three 在刷leetCode时,遇到了一系列关于power of Number的问题,刚开始不以为然,以为用简单的递归就能求解,可直到看...

Leetcode 231. Power of Two & 326. Power of Three & 342. Power of Four

231. Power of Two   Total Accepted: 69528 Total Submissions: 190898 Difficulty: Easy Given an ...

关于LeetCode中Power of Two一题的理解

题目如下: Given an integer, write a function to determine if it is a power of two.      多么朴实无华的题干,输入一个...

leetcode Power of Two java--代码小白开始苟延残喘第五天的刷题

苦逼的触及着码农之门:昨天刚开始想着从简单的题目开始刷题,就被这所谓的第一道easy题目刷的搞了一早上搞得蓬头垢面,我决定在坚持一点时间,如果自己码代码的能力依旧入刺之弱的话,就考虑毕业后就转行。。 ...

leetcode第231题:Power of Two

ProblemGiven an integer, write a function to determine if it is a power of two.题目给出一个整数,写一个函数判断它是否是2...

【LeetCode从零单刷】Number of 1 Bits & Power of Two

菜鸡单刷LeetCode系列!

leetcode- Number of 1 bits, power of two, power of three

leetcode- Number of 1 bits, power of two, power of three
  • aaasy
  • aaasy
  • 2016年04月23日 22:13
  • 101

Round Up To Power Of Two

这个标题应该说明了我们要做什么了,中文的意思是找出一个2^n的数,使其不小于给出的数字。举个例子吧: 如果给一个数字63,那么我需要获取不小于63的数字,但是这个数字需要是2的n次方了,所以 6...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode] 231.Power of Two
举报原因:
原因补充:

(最多只允许输入30个字)