LeetCode231 2的幂

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode231 2的幂相关的知识,希望对你有一定的参考价值。

目录

题目

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

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

-2^31 <= n <= 2^31-1

思路

首先n > 0

n化成二进制后只有一个1,则n就是2的幂

使用位运算,将n的二进制中最低位的那个1提取出来,再判断剩余的数值是否为0即可

提取方法:n & (n-1)

原理:将n的二进制表示为 (a10⋯0)​,其中 a 表示若干个高位,1 表示最低位的那个 1,0⋯0 表示后面的若干个0,则 n−1 的二进制表示为(a01⋯1),n和n-1做个按位与即可。

class Solution {
    public boolean isPowerOfTwo(int n) {
       return n > 0 && (n & (n-1)) == 0;
    }
}

以上是关于LeetCode231 2的幂的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] 231. 2 的幂

LeetCode 231 2的幂[循环 递归 位运算] HERODING的LeetCode之路

leetcode 231. 2 的幂

leetcode 231. 2 的幂

LeetCode 231. 2的幂

LeetCode231 2的幂