[Microsoft] O(1) 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;

思路:2的冪次方(2^n)的二進制表達法只有一位爲1,其他位都爲0,而(2^n-1)則是和(2^n)對應位置正好不一樣

           例如8的二進制1000,7的二進制0111

           因爲二者可以進行按位與運算,因爲按位與運算只有兩位同時爲1時,結果才爲1,否則爲0

注意:參加運算的兩個數據,按二進制位進行“與”運算,運算規則:0&0=0;   0&1=0;    1&0=0;     1&1=1

class Solution {
    /*
     * @param n: An integer
     * @return: True or false
     */
    public boolean checkPowerOf2(int n) {
        if(n<=0){
            return false;
        }
        
        return (n&(n-1))==0?true:false;     
    }
};
關於位運算:點擊打開鏈接
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章