码迷,mamicode.com
首页 > 其他好文 > 详细

【LeetCode】231. Power of Two

时间:2015-09-01 16:52:45      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

题目:

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

提示:

此题判断输入的数是否是2的次方。如果一个数是2的次方,那么它的二进制数只有一个1,其他都是0。根据这一定理,我们可以用如下方法解决这一问题:

  1. 第一种方法:将输入的数字转化为bitset,然后用count函数计算包含的1的个数;
  2. 第二种方法:计算n&(n-1),其中&是按位与。如果n是2的次方,那么这一计算的结果将会是0。

代码:

 第一种方法:

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if (n < 0) return false;
        bitset<32> bits(n);
        if (bits.count() == 1) return true;
        else return false;
    }
};

第二种方法:

class Solution {
public:
    bool isPowerOfTwo(int n) {
        return n > 0 && !(n & (n - 1));
    }
};

【LeetCode】231. Power of Two

标签:

原文地址:http://www.cnblogs.com/jdneo/p/4775958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!