资讯专栏INFORMATION COLUMN

「leetcode」231.2的幂

刘东 / 916人阅读

摘要:原题给定一个整数,编写一个函数来判断它是否是的幂次方。按位与的取值规则如下,等于等于等于等于。我们可以利用这个特性,判断数字是否为的次幂。

原题

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

示例 1:

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

示例 2:

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

示例 3:

输入: 218
输出: false
思路

我们首先看一组数字的二进制, 2^n的二进制只有一位是1其余全是0,2^n - 1的二进制全是1。按位与的取值规则如下,1 & 1 等于 1; 1 & 0 等于 0;0 & 1 等于0;0 & 0等于0。所以2^n & 2^n-1等于0。我们可以利用这个特性,判断数字是否为2的次幂。

// 2
0b10
// 1
0b01
// 0
0b10 & 0b01 === 0

// 4
0b100
// 3
0b011
// 0
0b100 & 0b011 === 0

// 256
0b100000000
// 255
0b011111111
// 0
0b100000000 & 0b011111111 === 0

// 128
0b10000000
// 127
0b01111111
// 0
0b10000000 && 0b01111111 === 0
代码 解法1
/**
 * @param {number} n
 * @return {boolean}
 */
var isPowerOfTwo = function(n) {
    if (n <= 0) {
        return false
    }
    if ((n & n - 1) === 0) {
        return true
    } 
    return false
};
解法2
2^n必然会被1 << 31整除, 也可以利用这一点解答
/**
 * @param {number} n
 * @return {boolean}
 */
var isPowerOfTwo = function(n) {
    if (n <= 0) {
        return false
    }
    if ((1 << 31) % n === 0) {
        return true
    } 
    return false
};

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106968.html

相关文章

  • [Leetcode] Power of Two and Power of Four 二之幂四之幂

    摘要:整除法复杂度时间空间思路最简单的解法,不断将原数除以,一旦无法整除,余数不为,则说明不是的幂,如果整除到,说明是的幂。二进制位计数法复杂度时间空间思路的幂有一个特性,就是它的二进制表达中只有开头是,后面全是。 Power of Two Given an integer, write a function to determine if it is a power of two. 整除法...

    荆兆峰 评论0 收藏0
  • 求解 4 的幂次方的装逼解法

    题目来源于 LeetCode 上第 342 号问题:4 的幂。题目难度为 Easy,目前通过率为 45.3% 。 题目描述 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶:你能不使用循环或者递归来完成本题吗? 题目解析 这道题最直接的方法就是不停的去除以 4 ,看最终...

    objc94 评论0 收藏0
  • 额,又是一道装逼解法的算法题

    摘要:题目难度为,目前通过率为。这个特殊的数有如下特点足够大,但不能超过位,即最大为个它的二进制表示中奇数位为,偶数位为符合这两个条件的二进制数是如果用一个的幂次方数和它做与运算,得到的还是的幂次方数。将这个二进制数转换成进制表示。 题目来源于 LeetCode 上第 342 号问题:4 的幂。题目难度为 Easy,目前通过率为 45.3% 。 题目描述 给定一个整数 (32 位有符号整数)...

    Zack 评论0 收藏0
  • 70道前端LeetCode题目集合及视频讲解(持续更新中...)

    前端LeetCode刷题 下面是已刷的题目的目录。GitHub:https://github.com/cunzaizhuy...每日打卡更新中,欢迎关注。 数组类 26 删除排序数组中的重复项 27 移除元素 35 搜索插入位置 66 加1 80 medium 删除排序数组中的重复项2 88 合并两个有序数组 167 两数之和II - 输入有序数组 118 杨辉三角 169 easy 求众数 1...

    mayaohua 评论0 收藏0
  • LeetCode 攻略 - 2019 年 7 月下半月汇总(100 题攻略)

    摘要:月下半旬攻略道题,目前已攻略题。目前简单难度攻略已经到题,所以后面会调整自己,在刷算法与数据结构的同时,攻略中等难度的题目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道题,目前已攻略 100 题。 一 目录 不折腾的前端,和咸鱼有什么区别...

    tain335 评论0 收藏0

发表评论

0条评论

刘东

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<