1. 程式人生 > >2的n次冪,判斷一個數是否能寫成m個2相乘,LeetCode 231號問題 給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。

2的n次冪,判斷一個數是否能寫成m個2相乘,LeetCode 231號問題 給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。

2的n次冪,判斷一個數是否能寫成m個2相乘,LeetCode 231號問題
給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。

示例 1:

輸入: 1
輸出: true
解釋: 20 = 1
示例 2:

輸入: 16
輸出: true
解釋: 24 = 16
示例 3:

輸入: 218
輸出: false

解決思路:
2的n次冪,想想下他的的2進製表示方式,它只能有一個位為1,其餘位都為零,兒n-1則在1之後的所有位置都為1,則有 n&(n-1) == 0

程式碼如下:

code

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