LeetCode231. 2的幂Golang版
1. 问题描述
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:
输入: 16
输出: true
解释: 24 = 16
示例 3:
输入: 218
输出: false
2. 思路
2.1 思路1
暴力求,除留余数法,不断判断n是否为2的倍数
2.2 思路2
位运算
- n > 0
- n & (n-1) == 0 ? true: false
3. 代码
3.1. 思路1代码
func isPowerOfTwo(n int) bool {
if n == 0 {
return false
}
if n == 1 {
return true
}
for n != 1 {
pop := n % 2
if pop != 0 {
return false
}
n /= 2
}
return true
}
3.2. 思路2代码
func isPowerOfTwo(n int) bool {
if n <= 0 {
return false
}
if n & (n-1) == 0 {
return true
}
return false
}