leetcode解题之231# Power of Two&326. Power of Three Java版 (判断是否为2,或者3 的幂)
2017-03-19 12:52
477 查看
231. Power of Two
Given an integer, write a function to determine if it is a power of two.求一个整数是不是2的幂
如果是power of two, 则2进制表达中,有且仅有一个1. 可以通过移位来数1的个数, 即判断 N & (N-1) 能把N中最右侧一个1变为0,即 N & (N-1)是否为0判断、
public boolean isPowerOfTwo(int n) { return n > 0 && ((n & (n - 1)) == 0 ); }
采用递归的方式判断,若是2的幂,最后退出条件为n=1
public boolean isPowerOfTwo(int n) { if (n == 1) return true; if (n >= 2 && n % 2 == 0) return isPowerOfTwo(n / 2); return false; }
326. Power of Three
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^x=n
log(3^x) = log(n)
x log(3) = log(n)
x = log(n) / log(3)
由于JAVA double浮点型的问题,需判断Math.abs(x - Math.round(x)) < 10e-15
public class Solution {
public boolean isPowerOfThree(int n) {
double temp = 10e-15;
if (n == 0)
return false;
double res = Math.log(n) / Math.log(3);
//精度问题,Math.round四舍五入函数
return Math.abs(res - Math.round(res)) < temp;
}
}补充:
public boolean isPowerOfThree(int n) {
if(n>1)
while(n%3==0) n /= 3;
return n==1;
}
相关文章推荐
- 【小熊刷题】power of two, pow(x, n) <Leetcode 231, 50 Java>
- leetcode231-Power of Two(判断一个整数n是否为2的方幂)
- [LeetCode]Power of Four/Power of Three/Power of Two(Java)
- LeetCode 231,326,342 --Power of Two & Three & Four
- [LeetCode] 231 Power of Two && 326 Power of Three && 342 Power of Four
- [leetcode] Power of Two 判断一个数是否是2的平方
- [LeetCode][数论]Power of Three&Power of Two
- LeetCode-Power of Two-解题报告
- Java [Leetcode 326]Power of Three
- leetcode 231. Power of Two 判断是否为2的幂 Java
- LeetCode Power of Two JAVA
- Power of Three ,判断一个数是否为3的n次幂
- LeetCode刷题: power of two (判断一个数是不是2的幂次方)
- 【leetcode】Power of Two【java】
- Java [Leetcode 231]Power of Two
- leetcode- Number of 1 bits, power of two, power of three
- leetcode解题报告233——Power of Two
- Java for LeetCode 231 Power of Two
- 【leetcode】 Power of Two(Java)
- LeetCode Algorithms #231 <Power of Two>