IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 每天一道算法题-2的幂【备战蓝桥】2022/3/26 -> 正文阅读

[数据结构与算法]每天一道算法题-2的幂【备战蓝桥】2022/3/26

2的幂【备战蓝桥】2022/3/24


原题链接: 2的幂
在这里插入图片描述

思路

本题难度较低,但会引入位运算

方法一:

  1. 如果这个数小于等于0,直接返回false
  2. 如果这个数是偶数,除以2;一直循环,直到这个数变成奇数
  3. 检查这个数最后是不是1,如果是1说明这个数原来是2的幂,如果不是说明不是

还有类似的方法,

  1. 如果这个数小于等于0,直接返回false
  2. 给1乘以2,循环,直到结果大于或者等于n
  3. 若等于,说明n是2的幂,若大于说明不是

这俩种方法一个做的是除法,一个做的是乘法

代码:

class Solution {
    public boolean isPowerOfTwo(int n) {
        if(n<=0) return false;
        while(n%2==0){
            n=n/2;
        }
        if(n==1){
            return true;
        }else{
            return false;
        }
    }
}

方法二:

使用位运算
首先学习一个知识点,如果一个数是2的幂,那它在二进制表示下,一定是若干个0和一个1。比如8,
用二进制表示为:1000。同是如果把这个数减去1,新得到的数在二进制表示下,一定是若干个1和一个0,且1和0的位置一定是互补的。比如8-1:0111。

1000
0111

那么把这俩个数按位与,得到的结果一定是0;
即:如果n是2的幂,那么就有n&(n-1)==0
但注意:0比较特殊,它也符合n&(n-1)==0

基于这个特点就可以写代码了

代码:

class Solution {
    public boolean isPowerOfTwo(int n) {
       if(n==0) return false;
       long m=(long)n;//n-1可能会超出int型数据的范围
       if((m&(m-1))==0){
           return true;
       }else{
           return false;
       }
    }
}

有其它问题可以在评论区交流。

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:19:45  更:2022-04-01 00:22:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:54:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码