[LintCode] O Check Power of 2
Posted Push your limit!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LintCode] O Check Power of 2相关的知识,希望对你有一定的参考价值。
Using O(1) time to check whether an integer n is a power of 2
.
Example
For n=4
, return true
;
For n=5
, return false
;
Challenge
O(1) time
Solution 1.
1 class Solution { 2 public boolean checkPowerOf2(int n) { 3 if(n <= 0) { 4 return false; 5 } 6 while(n != 1) { 7 if(n % 2 != 0) { 8 return false; 9 } 10 n = n / 2; 11 } 12 return true; 13 } 14 }
Solution 2. Bitwise operation
If n is a power of 2, then n‘s binary representation must have and only have one 1. So this problem is equivalent with Count 1 in Binary.
1 class Solution { 2 public boolean checkPowerOf2(int n) { 3 if(n <= 0){ 4 return false; 5 } 6 int cnt = 0; 7 while(n != 0){ 8 if((n & 1) == 1){ 9 cnt++; 10 if(cnt > 1){ 11 return false; 12 } 13 } 14 n = n >>> 1; 15 } 16 return true; 17 } 18 }
Related Problems
Count 1 in Binary
以上是关于[LintCode] O Check Power of 2的主要内容,如果未能解决你的问题,请参考以下文章
lintcode-easy-O Check Power of 2
lintcode: Check Sum of Square Numbers