LeetCode – Power of Two (Java)

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

Analysis

If a number is power of 2, it's binary form should be 10...0. So if we right shift a bit of the number and then left shift a bit, the value should be the same when the number >= 10(i.e.,2).

Java Solution 1

 public boolean isPowerOfTwo(int n) { if(n<=0) return false;   while(n>2){ int t = n>>1; int c = t<<1;   if(n-c != 0) return false;   n = n>>1; }   return true; }

Java Solution 2

If a number is power of 2, then its highly bit is 1 and there is only one 1. Therefore, n & (n-1) is 0.

 public boolean isPowerOfTwo(int n) { return n>0 && (n&n-1)==0; }

Java Solution 3

 public boolean isPowerOfTwo(int n) { return n>0 && n==Math.pow(2, Math.round(Math.log(n)/Math.log(2))); }

In this solution, the Math.round() method rounds up the number.

Category >> Algorithms >> Interview
If you want someone to read your code, please put the code inside <pre><code> and </code></pre> tags. For example:
<pre><code>
String foo = "bar";
</code></pre>
• Wow

• mg

public boolean isPowerOfTwo(int n) {
return ( n > 0 && (n & (n-1)) == 0);
}

• o

return (n & (n-1)) != 0 ? false : n != 0;

• Snail914

if (n&(n-1)) ==0, means n is power of 2

public class Solution {
public boolean isPowerOfTwo(int n) {
return n>0&& ((n&(n-1))==0);
}
}