Skip to content

Latest commit

 

History

History
31 lines (28 loc) · 711 Bytes

231.md

File metadata and controls

31 lines (28 loc) · 711 Bytes

power-of-two

解法一

位运算

func isPowerOfTwo(n int) bool {
    count := 0
    for n > 0 {
        n  = n &(n-1)
        count++
    }
    if count == 1 {
        return true
    }
    return false
}

这道题只要是 看 数字里面是否只有一个1就OK了。所以说 n = n &(n-1) 这种取消最后一位的1的做法 太太太重要了! 然后 还有一个是获取最后一个1的位置的 n &(-n) 就是。

代码改进

因为只要去掉1就是0就OK了,所以压根不需要计数

func isPowerOfTwo(n int) bool {
    if n != 0 && n &(n-1) == 0{ // 直接判断 n不等于0 去掉一位等于0 即可。
        return true
    }
    return false
}