231. 2 的幂

84 阅读1分钟

题目: 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。

如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/po… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法:
方法一:暴力法

func isPowerOfTwo(n int) bool {
    if n <= 0 {
        return false
    }


    for n > 1 {
        if n % 2 != 0 {
            return false
        }
        n = n / 2
    }
    return true
}

*方法二:位运算 *
符合条件的n的二进制表示只有一个1

func isPowerOfTwo(n int) bool {
    return n > 0 && (n & (n - 1) == 0)
}