Power of Two (231)
Given an integer, write a function to determine if it is a power of three.
Approach 1:
We check if n
can be divided by 2. If yes, divide n
by 2 and check it repeatedly.
**Could also implement it recursively however less eficient due to space being used in the call stack
class Solution {
public boolean isPowerOfThree(int n) {
if(n < 1) return false;
while(n % 2 == 0)
n/= 2;
return n == 1;
}
}
Complexity: O(log(N)time
Approach2 :
Very intuitive using bitcount. If n
is the power of 2, the bit count of n
is 1.
Note that 0b1000...000
is -2147483648
, which is not the power of two, but the bit count is 1.
return n > 0 && Integer.bitCount(n) == 1;
Time complexity = O(1)
The time complexity of bitCount()
can be done by a fixed number of operations.
More info in https://stackoverflow.com/questions/109023.
Last updated
Was this helpful?