前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

2的幂

原创
作者头像
_kyle
修改2020-12-15 10:33:32
7690
修改2020-12-15 10:33:32
举报
文章被收录于专栏:kyle的专栏kyle的专栏

题目描述

难度级别:简单

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

示例 1:

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

示例 2:

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

示例 3:

输入: 218 输出: false

解题思路

法一

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

代码语言:javascript
复制
const isPowerOfTwo = function(n) {
    if (n === 0) return false

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

    return true
};
  • 优化代码
代码语言:javascript
复制
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。

代码语言:javascript
复制
const isPowerOfTwo = function(n) {
    return n > 0 && (n & (n - 1)) === 0;
};

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
    • 示例 1:
      • 示例 2:
        • 示例 3:
        • 解题思路
        • 法一
        • 位运算
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档