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的幂相关推荐

  1. GitHub标星3w+的项目,全面了解算法和数据结构知识

    作者 | 程序员小吴 来源 | 五分钟学算法(ID: CXYxiaowu) 导语:今天分享一个开源项目,里面汇总了程序员技术面试时需要了解的算法和数据结构知识,并且还提供了相应的代码,目前 GitHu ...

  2. 算法与数据结构(2)

    算法与数据结构(2) 三年前发布过一篇算法与数据结构 https://blog.csdn.net/weixin_42209307/article/details/81122419?spm=1001.2 ...

  3. 算法与数据结构(面向对象思想)

    算法与数据结构和编程之间关系 计算机就是算法与数据结构, 当你选择搜索这类的文章的时候,你已经在翻大山了 编程就是当你翻过一座山的时候,你发现前面还有一座更高的山. LZ从事java工作一年了,最近听 ...

  4. 【算法与数据结构专场】BitMap算法基本操作代码实现

    上篇我们讲了BitMap是如何对数据进行存储的,没看过的可以看一下[算法与数据结构专场]BitMap算法介绍 这篇我们来讲一下BitMap这个数据结构的代码实现. 回顾下数据的存储原理 一个二进制位对 ...

  5. 算法与数据结构(part6)--单向链表

    学习笔记,仅供参考,有错必纠 参考自:单链表头指针.头结点.头元结的辨析 文章目录 算法与数据结构–基于python 链表 为啥需要链表 什么是链表 单向链表 什么是单向链表 单列表的操作 节点的实现 ...

  6. 算法与数据结构(part5)--栈与队列

    学习笔记,仅供参考,有错必纠 文章目录 算法与数据结构–基于python 栈 栈是什么 栈(ADT)的操作 栈的实现 队列 队列是什么 队列的操作 队列的实现 双端队列 双端队列是什么 双端队列的操作 ...

  7. 利用for循环调用插入方法批量插入 一条失败_算法与数据结构(1):基础部分——以插入排序为例...

    本文将会以插入排序为例,介绍算法与数据结构的基础部分. 插入排序 排序可以说是整个算法中最为基础,最为重要的一部分,而插入排序正是排序算法中最简单的一种解决办法. 什么是排序问题? 输入:n个数的一个 ...

  8. 算法与数据结构基础 - 堆(Heap)和优先级队列(Priority Queue)

    堆基础 堆(Heap)是具有这样性质的数据结构:1/完全二叉树 2/所有节点的值大于等于(或小于等于)子节点的值: 图片来源:这里 堆可以用数组存储,插入.删除会触发节点shift_down.shif ...

  9. 有问有答 | 算法和数据结构精华问答

    戳蓝字"CSDN云计算"关注我们哦! 所有的算法,乃至数学在实际运用中都是要根据不同的数据来选择不同的方法,所以一般学习过算法和数据结构的人都会越发的认识到,数据才是程序的中心,只 ...

最新文章

  1. 2022-2028年中国电子签名行业深度调研及投资前景预测报告
  2. javaWeb学习总结(4)- HttpServletResponse
  3. Django 学习笔记之七 实现分页
  4. 1万小时贫穷定律:为什么你越忙越穷?
  5. vscode php断点,VSCode中设置断点调试PHP(示例代码)
  6. ndoejs中中间件的使用
  7. WebService 的CXF框架 WS方式Spring开发
  8. sql语法:inner join on, left join on, right join on具体用法
  9. Charles Https 请求 SSL乱码问题 charles unreadable
  10. IT英语4-计算机英语缩写术语
  11. 如何给word文档添加注释
  12. hystrix的服务降级和关于熔断的概念、使用等以及网关gateway的了解与使用
  13. 泰勒公式和麦克劳林公式
  14. Python新手-记一次股权穿透层级打分(森林实现)
  15. vue3 前端pc生成微信支付二维码
  16. C++ string常用截取字符串方法
  17. 皇帝成长计划html文件打不开,皇帝成长计划源代码修改(共6篇).doc
  18. [DLX+bfs] hdu 4069 Squiggly Sudoku
  19. 文件名变乱码. 不知道怎么找回呢
  20. undefined symbol

热门文章

  1. 提示找不到msvcr71.dll怎么办
  2. 转:c++builder读写INI文件
  3. 花钱你都学不到的“饭局“规矩
  4. 重新认识一个强大的 Gson
  5. 修改TFS2013服务账户或者密码
  6. C# 给窗体添加皮肤 - SkinEngine的应用
  7. 合并表格中同一列中相同的内容
  8. Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)...
  9. 很喜欢的一首歌曲《Take me to your heart》
  10. 时间太少,如何阅读?