LeetCode 231. Power of Two

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

 

 


题目标签:Math; Bit Manipulation

  题目给了我们一个int n,让我们判断n 是不是 2的次方数。

  这一题不难,但是这里有一个比较巧妙的方法,利用bit manipulation。

  如果一个数字是 2的次方数,那么这个数字 肯定只有一个bit 是1。这样的话,利用 n & (n-1) 来判断,如果结果 == 0,那么这个n 是2的次方数。

  举例:

  n = 8  -  binary = 1 0 0 0

  n = 7  -  binary = 0 1 1 1

  8 & 7 = 0 0 0 0

 

 

 

Java Solution:

Runtime beats 25.01% 

完成日期:06/16/2017

关键词:Bit Manipulation

关键点:一个数字 如果是 2的次方数,那么它只能有一个bit 是1; 利用 n & (n-1) == 0 来判断

 1 class Solution 
 2 {
 3     public boolean isPowerOfTwo(int n) 
 4     {
 5         if(n <= 0)
 6             return false;
 7         
 8         return ( (n & (n-1)) == 0 );    
 9     }
10 }

参考资料:https://discuss.leetcode.com/topic/18365/one-line-java-solution

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/

posted @ 2018-01-25 08:25  Jimmy_Cheng  阅读(152)  评论(0编辑  收藏  举报