leetcode刷题笔记 231题 2的幂
leetcode刷题笔记 231题 2的幂
源地址:231. 2的幂
问题描述:
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:输入: 16
输出: true
解释: 24 = 16
示例 3:输入: 218
输出: false
//主要的思路基于位运算
//2的幂的二进制特点为10..0000
//可通过去除或仅保留最右侧的1进行处理
object Solution {
def isPowerOfTwo(n: Int): Boolean = {
if (n == 0) return false
val x: Long = n
//(x & -x)取与操作仅保留最右侧的1
//若其是2的幂,则取与结果为自身
return (x & -x) == x
}
}
object Solution {
def isPowerOfTwo(n: Int): Boolean = {
if (n == 0) return false
val x: Long = n
//(x & x-1)取与操作去除最右边的1
//若其是2的幂,则取与结果为0
return (x & x-1) == 0
}
}