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
    }
}
原文地址:https://www.cnblogs.com/ganshuoos/p/13839069.html