[python语法巩固][leetcode326][Power of Three]
2016-01-09 21:05
603 查看
题目大意:
让你判断一个int是否为3的幂;最简单的思路
C++
class Solution { public: bool isPowerOfThree(int n) { for(long long i=1;i<=n;i=i*3LL) { if(i==n) return true; } return false; } };
Python
第一种写法…很低效..因为不会类似C++的for..class Solution(object): def isPowerOfThree(self, n): """ :type n: int :rtype: bool """ for x in range(30): if 3**x==n: return True; return False;
第二种写法 类似C++的,但是只用用while实现
Python的缩进真是让人理解不能 空格TAP混用不行??????
需要修改Sublime的设置
class Solution(object): def isPowerOfThree(self, n): x=1; while x <= n: if x==n : return True; x=x*3; return False;
sublime设置
sublime 默认是tab 缩进,修改成4个空格缩进 “首选项” —>”设置–更多” —>’”特定的语法–用户”
添加如下内容 点击(此处)折叠或打开 {
“tab_size”: 4,
“translate_tabs_to_spaces”: true }
要求不准用循环
1.利用对数函数,再判断是否为整数。C++
精度误差要控制的很细 1e-10才能过,这样的程序速度快,但是存在一定误差。注意取整的时候要加一个0.5才是 四舍五入!!!刘书上说过。
class Solution { public: bool static isPowerOfThree(int n) { double a=log(n)/log(3); printf("%lf\n",a); int b=(int)(a+0.5); printf("%d\n",b); if(abs(a-b)<1e-10) return true; else return false ; } };
Python
round(val,位数) 四舍五入Python 中math.log() 接收到0会报错
class Solution(object): def isPowerOfThree(self, n): if n>0: a=math.log(n)/math.log(3.0); else : a=0.5; b=round(a,0) if abs(a-b)<1e-10: return True; else: return False;
终极想法
还有一种想法就是Python打表 switch ,应该是最简单的了。相关文章推荐
- [python语法巩固][leetcode326][Power of Three]
- python numpy:1 numpy.array和numpy.matrix常用函数使用
- 快速打造跨平台开发环境 vagrant + virtualbox + box
- 菜鸟学python(7) 简单文件访问
- 菜鸟学python(6) for语句
- Selenium+Python Radio,Checkbox,Link,ComboBox控件
- Python修改当前工作目录
- leetcode之Partition List
- python中利用exec动态创建函数
- python学习--------随机验证码生成
- python项目之 天气 优化版
- 如何更改Ipython Notebook默认路径
- Python 2.5.4 生成器
- python项目之 天气程序 带GUI
- Python入门知识总结
- caffe中cuda7.5的配置及python接口的使用--ubuntu14.04
- cpython(5)
- 《笨办法学Python》 第9课手记
- Python 线程、进程和协程
- numpy实用技巧(一)