Leetcode 231题Power of Two

来源:互联网 发布:c语言 贪吃蛇 编辑:程序博客网 时间:2024/06/05 23:56

Leetcode 231题Power of Two

题目

Given an integer, write a function to determine if it is a power of two.
即判断一个数是否是2的次方数 —— [ Power of Two ]


思路

如果一个数是2的次方数,那么n用二进制表示的数只有一位上是1,其他位上都是0,例如100000,0010,0001等,那么n-1就表达为例如,011111,0001,0000。那么可以发现n和n-1按位于的结果一定为零。

如果n不是2的次方数,那么用二进制表示的数不只有一个位上是1,例如0101,那么n-1的结果为0100,n和n-1的按位于结果一定不是零。


解法

  • C语言
bool isPowerOfTwo(int n) {   return n>0 && ((n & (n-1)) == 0);}

  • C++
class Solution {public:    bool isPowerOfTwo(int n) {       return n>0 && ((n & (n-1)) == 0);     }};

  • Javascript
/** * @param {number} n * @return {boolean} */var isPowerOfTwo = function(n) {       return n>0 && ((n & (n-1)) == 0); };

0 0
原创粉丝点击