給你一個整數 n,請你判斷該整數是否是 2 的冪次方。如果是,返回 true ;否則,返回 false 。
如果存在一個整數 x 使得?n == 2x ,則認為 n 是 2 的冪次方。
示例 1:
輸入:n = 1
輸出:true
解釋:20 = 1
示例 2:
輸入:n = 16
輸出:true
解釋:24 = 16
示例 3:
輸入:n = 3
輸出:false
示例 4:
輸入:n = 4
輸出:true
解題思路
根據二進制的特性可得一個數是 2 的冪次方,那么它的二進制表示中,只有1位是1。因此我們可以檢查所有的位,統計1的個數
代碼
func isPowerOfTwo(n int) bool {if n<0{return false}cnt:=0for i := 0; i < 31; i++ {cnt+=n&1n>>=1}return cnt==1
}