算法与数据结构之判断是否为n的幂
231. Power of Two
本题有四种思路,一种一种道来
1.循环
class Solution {
public:bool isPowerOfTwo(int n) {if(n<=0) return false;while(n%2==0)n/=2;return n==1;}
};
2.递归
class Solution {
public:bool isPowerOfTwo(int n) {return n>0 && (n==1 || (n%2==0 && isPowerOfTwo(n/2))); }
};
3.&运算符
class Solution {
public:bool isPowerOfTwo(int n) {return n>0 && ((n & (n-1)) == 0); }
};
4.数学方法
int最大值为2^31-1,那么最大即为2^30,所以
class Solution {
public:bool isPowerOfTwo(int n) {return n>0 &&(1073741824 % n == 0);}
};
342. Power of Four
1.循环
class Solution {
public:bool isPowerOfFour(int num) {if(num<=0)return false;while(num%4==0)num/=4;return num == 1;}
};
2.递归
class Solution {
public:bool isPowerOfFour(int num) {return num>0 && (num == 1 ||(num%4==0 && isPowerOfFour(num/4)));}
};
3.&运算符
class Solution {
public:bool isPowerOfFour(int num) {return num>0 && (num&(num-1))==0 && (num-1)%3 == 0;}
};
4.数学方法
class Solution {
public:bool isPowerOfFour(int num) {return num>0 && (num&(num-1))==0 && (num&0x55555555) == num;}
};
注:该方法判断四的幂的二进制1的位置,若1的位置在奇数位,则才为4的幂
326. Power of Three
1.循环
class Solution {
public:bool isPowerOfThree(int n) {if(n<=0)return false;while(n%3==0)n/=3;return n==1;}
};
2.递归
class Solution {
public:bool isPowerOfThree(int n) {return n>0 && (n==1 || (n%3==0 && isPowerOfThree(n/3)));}
};
3.数学方法
class Solution {
public:bool isPowerOfThree(int n) {return n>0 && 1162261467%n==0;}
};
转载于:https://www.cnblogs.com/vhyz/p/7244194.html
算法与数据结构之判断是否为n的幂相关推荐
- GitHub标星3w+的项目,全面了解算法和数据结构知识
作者 | 程序员小吴 来源 | 五分钟学算法(ID: CXYxiaowu) 导语:今天分享一个开源项目,里面汇总了程序员技术面试时需要了解的算法和数据结构知识,并且还提供了相应的代码,目前 GitHu ...
- 算法与数据结构(2)
算法与数据结构(2) 三年前发布过一篇算法与数据结构 https://blog.csdn.net/weixin_42209307/article/details/81122419?spm=1001.2 ...
- 算法与数据结构(面向对象思想)
算法与数据结构和编程之间关系 计算机就是算法与数据结构, 当你选择搜索这类的文章的时候,你已经在翻大山了 编程就是当你翻过一座山的时候,你发现前面还有一座更高的山. LZ从事java工作一年了,最近听 ...
- 【算法与数据结构专场】BitMap算法基本操作代码实现
上篇我们讲了BitMap是如何对数据进行存储的,没看过的可以看一下[算法与数据结构专场]BitMap算法介绍 这篇我们来讲一下BitMap这个数据结构的代码实现. 回顾下数据的存储原理 一个二进制位对 ...
- 算法与数据结构(part6)--单向链表
学习笔记,仅供参考,有错必纠 参考自:单链表头指针.头结点.头元结的辨析 文章目录 算法与数据结构–基于python 链表 为啥需要链表 什么是链表 单向链表 什么是单向链表 单列表的操作 节点的实现 ...
- 算法与数据结构(part5)--栈与队列
学习笔记,仅供参考,有错必纠 文章目录 算法与数据结构–基于python 栈 栈是什么 栈(ADT)的操作 栈的实现 队列 队列是什么 队列的操作 队列的实现 双端队列 双端队列是什么 双端队列的操作 ...
- 利用for循环调用插入方法批量插入 一条失败_算法与数据结构(1):基础部分——以插入排序为例...
本文将会以插入排序为例,介绍算法与数据结构的基础部分. 插入排序 排序可以说是整个算法中最为基础,最为重要的一部分,而插入排序正是排序算法中最简单的一种解决办法. 什么是排序问题? 输入:n个数的一个 ...
- 算法与数据结构基础 - 堆(Heap)和优先级队列(Priority Queue)
堆基础 堆(Heap)是具有这样性质的数据结构:1/完全二叉树 2/所有节点的值大于等于(或小于等于)子节点的值: 图片来源:这里 堆可以用数组存储,插入.删除会触发节点shift_down.shif ...
- 有问有答 | 算法和数据结构精华问答
戳蓝字"CSDN云计算"关注我们哦! 所有的算法,乃至数学在实际运用中都是要根据不同的数据来选择不同的方法,所以一般学习过算法和数据结构的人都会越发的认识到,数据才是程序的中心,只 ...
最新文章
- 2022-2028年中国电子签名行业深度调研及投资前景预测报告
- javaWeb学习总结(4)- HttpServletResponse
- Django 学习笔记之七 实现分页
- 1万小时贫穷定律:为什么你越忙越穷?
- vscode php断点,VSCode中设置断点调试PHP(示例代码)
- ndoejs中中间件的使用
- WebService 的CXF框架 WS方式Spring开发
- sql语法:inner join on, left join on, right join on具体用法
- Charles Https 请求 SSL乱码问题 charles unreadable
- IT英语4-计算机英语缩写术语
- 如何给word文档添加注释
- hystrix的服务降级和关于熔断的概念、使用等以及网关gateway的了解与使用
- 泰勒公式和麦克劳林公式
- Python新手-记一次股权穿透层级打分(森林实现)
- vue3 前端pc生成微信支付二维码
- C++ string常用截取字符串方法
- 皇帝成长计划html文件打不开,皇帝成长计划源代码修改(共6篇).doc
- [DLX+bfs] hdu 4069 Squiggly Sudoku
- 文件名变乱码. 不知道怎么找回呢
- undefined symbol
热门文章
- 提示找不到msvcr71.dll怎么办
- 转:c++builder读写INI文件
- 花钱你都学不到的“饭局“规矩
- 重新认识一个强大的 Gson
- 修改TFS2013服务账户或者密码
- C# 给窗体添加皮肤 - SkinEngine的应用
- 合并表格中同一列中相同的内容
- Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)...
- 很喜欢的一首歌曲《Take me to your heart》
- 时间太少,如何阅读?