[LeetCode][数论]Power of Three&Power of Two
2016-03-24 16:35
351 查看
题目描述:
Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?
思路:
前提:判断一个数是否为3的幂在不进行循环的条件下
过程:数a的幂数有什么特点呢?因为同一个数的幂数之间的关系为大数能被小数整除,至少为底数,所以一个小trick就是利用当前系统支持的3的最大幂数来整除给定的数字,如果能整除,则是其幂数,如果不能整除则不是,为什么这个成立呢?因为一个数的幂数具有一个特征:因子全部为同一个数a,所以如果给定数中含有a之外的因子,一定不能被整除。对于2来说还有特殊的地方就是2的幂数假设为n,n&n-1值为0,这是只适用于2的幂数的一种求法retu
代码实现:
Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?
思路:
前提:判断一个数是否为3的幂在不进行循环的条件下
过程:数a的幂数有什么特点呢?因为同一个数的幂数之间的关系为大数能被小数整除,至少为底数,所以一个小trick就是利用当前系统支持的3的最大幂数来整除给定的数字,如果能整除,则是其幂数,如果不能整除则不是,为什么这个成立呢?因为一个数的幂数具有一个特征:因子全部为同一个数a,所以如果给定数中含有a之外的因子,一定不能被整除。对于2来说还有特殊的地方就是2的幂数假设为n,n&n-1值为0,这是只适用于2的幂数的一种求法retu
代码实现:
public class Solution { public boolean isPowerOfThree(int n) { return (n>0 && 1162261467%n==0); } }
public class Solution { public boolean isPowerOfTwo(int n) { /*if(n <= 0) return false; while(n % 2 == 0) n /= 2; if(n==1) return true; else return false;*/ //return ((n>0) && (1073741824 %n == 0)); if(n<=0) return false; int result = n&(n-1); if(result == 0) return true; else return false; } }
相关文章推荐
- 涨姿势!x86处理器兼容ARM架构App的秘密
- Oracle对表空间操作的sql
- 3D 图形学
- 【自动化测试】在做自动化测试之前你需要知道的
- css transition
- Python学习笔记(1)——基础知识
- 解决wamp集成的mysql和已有的mysql冲突问题
- jvm(3)-垃圾收集器与内存分配策略
- 华为ssh
- (4.1.36.11)Android 一张图理解getWidth和getMeasuredWidth
- 手机充电原理分析及问题总结
- cocoa pods 安装 与 卸载
- 卷积神经网络全面解析
- Java学习笔记(一)之―认识JDK、JRE、JVM
- editText限制输入字符长度,禁止输入表情,清除输入文字的按钮
- Hadoop(二)自定义输出
- Linux中find常见用法示例
- [原]Wpf应用Path路径绘制圆弧
- 实验一 操作系统
- Android之webView入门