2的幂

2020-12-14  本文已影响0人  422ccfa02512

题目描述

难度级别:简单

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例 1:

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

示例 2:

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

示例 3:

输入: 218
输出: false

解题思路

法一

当整数n大于1时,对其进行迭代,通过对连续2取模判断是否等于0,当遇到不为0时,直接输出false。

const isPowerOfTwo = function(n) {
    if (n === 0) return false

    while(n > 1) {
        if (n % 2 !== 0) return false
        n /= 2
    }

    return true
};
const isPowerOfTwo = function(n) {
    if (n < 1) return false
    while(n % 2 == 0) n /= 2
    
    return n === 1
};

位运算

通过n & (n - 1) 是否为0进行判断。因为一个数是2的幂次方,则这个2进制数必然只有一个1,若求x-1,则它的1位变为0,1后面的0位变为1,在求与运算,这是值为0。

const isPowerOfTwo = function(n) {
    return n > 0 && (n & (n - 1)) === 0;
};

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/power-of-two

上一篇 下一篇

猜你喜欢

热点阅读