leetcode 231题

Posted by franki on January 11, 2022

leetcode 231题 2 的幂

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

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

示例 1:

输入:n = 1
输出:true
解释:20 = 1

示例 2:

输入:n = 16
输出:true
解释:24 = 16

示例 3:

输入:n = 3
输出:false
提示:
-231 <= n <= 231 - 1

思路

循环遍历判断是否能被2整除,如果能,就除以2,继续下一轮判断,以此往复,查看最后结果是否为1,若是,则是2的幂。

代码

var isPowerOfTwo = function(n) {
    while (n > 1) {
        if (n % 2 === 0) {
            n /= 2;
        } else {
            return false;
        }
    }
    return n === 1;
};

复杂度分析

  • 时间复杂度:O(logN)
  • 空间复杂度:O(1)