【剑指Offer】数值的整数次方 解题报告(Python)
2024-09-06 11:41:42
【剑指Offer】数值的整数次方 解题报告(Python)
标签(空格分隔): LeetCode
题目地址:https://www.nowcoder.com/ta/coding-interviews
题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
Ways
方法一:
使用循环去做。
题目中已经明确了exponent是整数。这里要考虑的是整数可能是0或者负数。
当其是正数的情况很简单,直接循环就能搞定。
当其为负数的时候,可以先求出其绝对值的结果,再取倒数。
当其为0的时候,直接返回0即可。
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
if exponent < 1:
return 1 / self.getPower(base, -exponent)
else:
return self.getPower(base, exponent)
def getPower(self, base, exponent):
if base == 0:
return 0
elif exponent == 1:
return base
res = 1
for i in range(exponent):
res *= base
return res
方法二:
对求正数次方的解法可以做一个优化:
这样就类似于一个求费布拉奇数列的解法,使用递归能比较快速的求出整数次方。
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exp):
if exp < 1:
return 1 / self.getPower(base, -exp)
else:
return self.getPower(base, exp)
def getPower(self, base, exp):
if exp == 0:
return 1
elif exp == 1:
return base
res = self.Power(base, exp >> 1)
res *= res
if exp & 1 == 1:
res *= base
return res
Date
2018 年 3 月 11 日
最新文章
- eclipse插件汇总
- 循环遍历泛型集合List绑定到table
- Linux之curl命令详解
- Kinetic使用注意点--collection
- java pdu短信解码
- Android 开发第四天
- 获取文件路径 分类: WinForm 2014-07-25 14:27 103人阅读 评论(0) 收藏
- 大端模式&;小端模式、主机序&;网络序、入栈地址高低问题
- IOS设备对position的支持性
- Git时光机穿梭之删除文件
- JavaScript操作符(布尔操作符、乘性操作符和加性操作符)
- php 日历代码
- spring xml配置注入改为手动注入过程
- Matlab中要显示数学公式或符号Latex
- 跟bWAPP学WEB安全(PHP代码)--PHP代码注入
- 添加新内容的四个 jQuery 方法:append,prepend,after,before
- 在jenkins里使用SCM管理jenkinsfile
- OpenGL学习(hello)
- Socket调用方式(同步,异步,阻塞,非阻塞)
- C#字符串(Sring)操作
热门文章
- 笔记Mysql(1)
- Celery进阶
- Spring同一个类中的注解方法调用AOP失效问题总结
- Android 开源框架Universal-Image-Loader加载https图片
- Linux学习 - 正则表达式
- 神器Tampermonkey的安装使用
- 【Linux】【Services】【SaaS】Docker+kubernetes(5. 安装和配置ETCD集群)
- 【C/C++】函数的默认参数/函数的占位参数/函数重载/注意事项
- java 多线程的状态迁移 常用线程方法分析
- 莫烦python教程学习笔记——validation_curve用于调参