博客
关于我
Lintcode: O(1) Check Power of 2
阅读量:788 次
发布时间:2023-01-31

本文共 794 字,大约阅读时间需要 2 分钟。

要判断一个整数是否是2的幂次方,可以使用位运算来检查其二进制表示是否只有一个1。以下是详细的解决方案:

方法思路

2的幂次方的二进制表示只有一个1。例如:

  • 4(二进制100)
  • 8(二进制1000)
  • 16(二进制10000)

我们可以通过以下步骤来检查一个数是否是2的幂次方:

  • 检查数是否为0,返回false。
  • 统计二进制表示中1的个数,只有一个1时,数才是2的幂次方。
  • 解决代码

    public boolean checkPowerOf2(int n) {    if (n <= 0) {        return false;    }    int count = 0;    int oneFound = false;    while (n != 0) {        int remainder = n % 2;        if (remainder == 1) {            oneFound = true;            count = 1;        } else {            count++;        }        n = n / 2;    }    return oneFound;}

    代码解释

  • 检查数是否为0或负数:如果n为0或者负数,直接返回false,因为0和负数不可能是2的幂次方。
  • 初始化变量count用于统计1的数量,oneFound用于标记是否找到了1。
  • 遍历二进制位:通过不断除以2,逐个检查每一位是否为1。每次检查时:
    • 如果位为1,设置oneFound为true,count重置为1。
    • 如果位为0,count加1。
  • 返回结果:如果在遍历过程中只找到一个1,返回true;否则返回false。
  • 这个方法的时间复杂度为O(1),因为无论n有多大,位数最多为32位(对于int型),遍历次数固定。

    转载地址:http://fywfk.baihongyu.com/

    你可能感兴趣的文章
    Linux Centos7 xfsdump文件系统的备份和恢复
    查看>>
    Linux centos7 防火墙设置
    查看>>
    linux centos下 svn 版本控制服务器的搭建
    查看>>
    Linux CFSSL 生成证书
    查看>>
    linux chrom 系统无法读取用户偏好配置无需删除.config配置文件
    查看>>
    linux cmd using
    查看>>
    linux coreseek-4.1安装
    查看>>
    linux core文件设置
    查看>>
    Linux CPU优化性能实战
    查看>>
    Linux CPU管理及监控与性能评估
    查看>>
    Linux CPU负载状态分析实战
    查看>>
    Linux Crontab
    查看>>
    linux crontab 实现每秒执行
    查看>>
    Linux Cron表达式每半个小时执行一次
    查看>>
    linux crw权限,linux中crw brw lrw等等文件属性是什么
    查看>>
    linux curl 调用api
    查看>>
    Linux C程序如何检测WIFI无线USB网卡是否可用?
    查看>>
    Linux C(day01)
    查看>>
    linux debian系统中利用sysv-rc-conf启动服务
    查看>>
    linux deb文件安装
    查看>>