326. Power of Three
来源:互联网 发布:尤里的复仇核弹数据 编辑:程序博客网 时间:2024/06/05 03:23
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?
s思路:
1. 看是否3的指数,即判断n==3^i。直接的方法就是每次和3求余,如果为0,就除以3,看是否等于1.
2. 但这么一来,就太简单了,题目要求不用loop不用recursion. 也就是说要我们不能从detail入手,一步一步来判断了,需要从top-down的系统角度看问题,比如:从数学的角度看,能否用数学公式直接判断。
3. 以为有啥高深的数学,看答案发现还是一个考察边界的问题,用int可以表示的最大的3^i来和给的数求余数,如果余数为0,说明能整除,那么这个给的数就一定也能表示成3^j.太妙!
4. 看来边界问题就是一个根本问题,解决了各种边界,比如:32bit长,最大的可表示的数等都是边界,就要敢想才行!
class Solution {public: bool isPowerOfThree(int n) { // if(n<=0) return false; return !(1162261467%n);//1162261467=3^19 }};
0 0
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- 326. Power of Three
- [形象的解释神经网络激活函数的作用是什么?]
- ruby 进门小结
- 让人很容易误解的TCP拥塞控制算法
- Java基础--基本数据类型与包装类
- java系统高并发解决方案
- 326. Power of Three
- 【bzoj2152】聪聪可可 点分治
- Java之Character类
- Java之StringBuffer类
- C#委托
- 资料整理:mac机械键盘设置(Karabiner 与 Karabiner-Element)
- LINUX进程通信,共享内存
- 区间dp(POJ - 1141)
- (三十)自定义事件