题目描述:

给定一个整数 (32位有符整数型),请写出一个函数来检验它是否是4的幂。

示例:
当 num = 16 时 ,返回 true 。 当 num = 5时,返回 false。

问题进阶:你能不使用循环/递归来解决这个问题吗?

题目分析:

如231题同样思路,还是通过位操作来解决这道

首先判断下输入为0和负数的情况

然后分析4的幂的特点0,4,16

化为二进制0,0100,00010000

跟求2的幂不同的是此处少了2,8

化为2进制   ,0010,00001000

0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0

4

8

我们尝试使用位操作将2,8过滤掉

解答代码:

C++版:

class Solution {
public:bool isPowerOfFour(int n) {if (n<=0) return false;return  ((n&(n-1))==0 && ((n&0x55555555)));}
};

Code

Python版:

class Solution:def isPowerOfFour(self, num):"""
        :type num: int:rtype: bool"""
        if num<=0:return Falsereturn  ((num&(num-1))==0 and (bool(num&0x55555555)))

Code

转载于:https://www.cnblogs.com/qflyue/p/8973355.html

leetcode刷题笔记342 4的幂相关推荐

  1. LeetCode刷题笔记汇总

    LeetCode刷题笔记汇总 第一次刷LeetCode写的一些笔记. 1.两数之和 3.无重复字符的最长子串 15.三数之和 18.四数之和 19.删除链表的倒数第 N 个结点 20.有效的括号 21 ...

  2. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)

    LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...

  3. LeetCode刷题笔记2——数组2

    LeetCode刷题笔记2--数组2 重塑数组 题目 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原 ...

  4. 小何同学的leetcode刷题笔记 基础篇(01)整数反转

    小何同学的leetcode刷题笔记 基础篇(01)整数反转[07] *** [01]数学取余法*** 对数字进行数位操作时,常见的方法便是用取余的方法提取出各位数字,再进行操作 操作(1):对10取余 ...

  5. 【leetcode刷题笔记】动态规划

    #[leetcode刷题笔记]动态规划 石子游戏 public boolean stoneGame(int[] piles) {int N = piles.length;// dp[i][j] is ...

  6. LeetCode刷题笔记-动态规划-day4

    文章目录 LeetCode刷题笔记-动态规划-day4 55. 跳跃游戏 1.题目 2.解题思路 3.代码 45. 跳跃游戏 II 1.题目 2.解题思路 3.代码 LeetCode刷题笔记-动态规划 ...

  7. LeetCode刷题笔记- 15.三数之和

    LeetCode刷题笔记- 15.三数之和 C语言 题目 注意点 C语言 /*** Return an array of arrays of size *returnSize.* The sizes ...

  8. LeetCode刷题笔记第6题:Z字形变换

    LeetCode刷题笔记第6题:Z字形变换 想法: 要完成字符串根据给定的行数从上往下,从左到右完成Z字形排列.当只有一行时直接返回原字符串,当行数大于1时,先以行数构建一个行数数值个空字符串的列表, ...

  9. leetcode刷题笔记——二分查找

    leetcode刷题笔记--二分查找 目前完成的贪心相关的leetcode算法题序号: 中等:80,81 困难:4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com ...

最新文章

  1. AUTOML 和 NAS 的真谛
  2. linux文件操作(二)
  3. docker 如何删除<none>镜像
  4. mpvue 微信小程序_使用Vue.js开发微信小程序:开源框架mpvue解析
  5. Ubuntu 17.10安装phpMyAdmin数据库管理工具
  6. JS跳转手机QQ的聊天页面
  7. androidh5混合开发_Android H5混合开发(3):原生Android项目里嵌入Cordova
  8. 系统Model底层隐藏的坑
  9. Cobbler详解(二)——Cobbler安装配置
  10. ROS2 Galactic teb_local_planner
  11. Fluent 三种初始化使用方法
  12. 前端Photoshop插件cutterman的下载和安装以及使用
  13. python给pdf右上角盖章
  14. QQ音乐 最新歌曲源 API(稳定)
  15. win7计算机窗口示意图,win7电脑硬盘怎么分区 win7电脑硬盘分区操作方法介绍
  16. 快递物流查询,教你自动查询并识别所有快递是否签收、退回
  17. 关于Monkey稳定性测试,这是我看到最详细的文章
  18. JDBC学习笔记(二)
  19. 警惕!又一起网络钓鱼攻击事件:Uniswap被盗810万美元
  20. php识别人脸并提取特征值,C#人脸识别入门篇--提取人脸特征值及人脸识别

热门文章

  1. Laravel 源码解读:php artisan make:auth
  2. struts2(三) 输入校验和拦截器
  3. Swagger+AutoRest 生成web api客户端(.Net)
  4. php的filesystem基本函数的学习(1)
  5. Docker学习与和应用(二)_使用Docker
  6. Oracle 12c In-Memory Option应用解析
  7. IOS报错:Unexpected ‘@’ in program
  8. 封装+构造方法小例子
  9. java中float和double型数据在赋值时有哪些注意事项?,java语言中float和double类型的数据在编程时的注意事项...
  10. 阅读A Practical Guide to Support Vector Classification