2的幂


题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
思路:一个数是2的次方那么它32位上只能有一个1,其他都是0
方法1:通过将这个数与1进行&运算,判断1的个数是否是1.

class Solution {public:bool isPowerOfTwo(int n) {int t = n;int ones = 0;while(t > 0){ones += (t & 1);t >>= 1;}return ones == 1;}
};

方法2:
利用n&(n-1)判断是否为0,如果是0则为2的幂

class Solution {public:bool isPowerOfTwo(int n) {//  int t = n;// int ones = 0;// while(t > 0){//     ones += (t & 1);//    t >>= 1;//}//return ones == 1;if(n == 1){return true;}else if(n > 1){return ((n%2) == 0) && isPowerOfTwo(n/2);}else{return false;}}};

3的幂

和判断2的幂的方法一样。

class Solution
{public:bool isPowerOfThree(int n) {if(n <= 0)return false;else if(n == 1)return true;elsereturn n % 3 == 0 && isPowerOfThree(n / 3);}
};

4的幂(按照题目要求,不能使用循环或者迭代)

题目:给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。你能不使用循环或者递归来完成本题吗?
思路:一个数是4的幂一定是2的幂,但是一个数是2的幂不一定是4的幂。如下图所示,上下两幅图加起来就是2的幂,但是4的幂只在基位,因此可以通过与奇数位都是1,偶数为都是0的数(1010101010101010101010101010101)进行与运算,结果仍为原来数。

class Solution {public:bool isPowerOfFour(int num) {return num > 0 && !(num & num - 1) && (num & 0x55555555) == num;}
};

【c++leetcode】判断一个数是否是2的幂、3的幂、4的幂相关推荐

  1. 【LeetCode】陌陌面试-有序数组于其一个元素翻转后,判断一个数是否存在数组中,时间复杂度O(logn)

    1.有序数组,判断一个数是否存在于数组中,时间复杂度O(logn) 解题思路: 二分法,在有序数组中,提高时间复杂度的一个方法. 代码: def demo(nums, target):left,rig ...

  2. 位图法:判断一个数是否在40亿个整数中?

    微信搜索[程序员囧辉],关注这个坚持分享技术干货的程序员. 题目 最近看到一个题目:给40亿个不重复的 unsigned int 的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个 ...

  3. 位运算判断一个数是奇数还是偶数

    在 leetcode 上刷题的时候,有道题需要判断一个数是奇数还是偶数.看到大神写的判断方法.记录一下 代码如下 int t = 3; // 要判断的数. int odd = t & 1; / ...

  4. 判断一个数为多少位 比如 3 是 1位 102 是3位。

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //判断一个数为多少位 比如 3 是 1位   102 是3位. #include <iostream> us ...

  5. python判断一个数是整数、浮点数还是字符串

    python判断一个数是整数.浮点数还是字符串 示例代码:

  6. C语言判断一个数是否是回文数

    C语言判断一个数是否是回文数 #include <stdio.h> int main(){int num, s, y = 0;printf("请输入一个数字: ");s ...

  7. c语言判断2 1000素数,2是不是素数(C语言判断一个数为素数)

    我听说西方不承认2是质数,而中国承认 到底是不是真的 2是质数.质数又称素数.一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数:否则称为合数.2是一个大于1的自然数,这一点满足质数 ...

  8. 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

    1.腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 思想:用数组来存这40亿个数,而且只能用bit来表示.why? ...

  9. 判断一个数是否是2的倍数----------面试算法

    思考: 如果要判断一个数是2的倍数,只需要判断这个数的二进制的第一位是1,其他的位都是0就可以. 也就是形如: 100 10000 1000000 注意,上面都是二进制的表示 关键是怎么判断只有第一位 ...

最新文章

  1. MS SQL Server和MySQL区别
  2. QuickPager asp.net 分页控件 转
  3. js检测鼠标是否在操作_原生JS趣味demo:炫酷头像鼠标追随效果的实现
  4. SUSE Linux维护笔记三
  5. python 同时发多个请求_PythonWebServer如何同时处理多个请求
  6. web 前端签名插件_10款前端开发神器,助你成前端高手?
  7. 逆向分析 工具、加壳、安全防护篇
  8. 微信小程序弹框的使用
  9. Java简介:Java是什么?及Java语言的特点
  10. Transmission 下载列表、下载文件 迁移机器指南
  11. 【从零开始游戏开发】EmmyLua插件注解功能
  12. 基于c#的winform中图片放大后不清晰问题
  13. 图像识别毕业设计 人脸识别与疲劳检测系统设计与实现 - python opencv
  14. 论文笔记-Understanding Convolution for Semantic Segmentation
  15. Android 地图导航调用百度地图、高德地图、腾讯地图
  16. Linus批评英特尔的LAM代码,拒绝将其合并到内核
  17. Android 对apk进行重签名和查看签名(window 和mac)及生成签名
  18. 一维卷积的意义和二维卷积(图像处理)的简单理解
  19. 横空出世!IDEA画图神器来了,比Visio快10倍
  20. 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。

热门文章

  1. php ipa 版本定制,class.php
  2. 2020 安装 nacos
  3. 高中信息技术——VB数据类型和基础语句结构
  4. “21天好习惯”第一期-13
  5. C语言:从键盘输入一些数,求所有正数之和。当输入负数时,程序结束。
  6. css3 flex布局九宫格,css3最全flex布局结构整理
  7. php限制密码输入错误次数,js密码输入错误指定次数禁止输入
  8. 应用程序委托协议栈发送消息
  9. linux alias命令
  10. QT_在循环中刷新界面