leetcode刷题-50Pow(x, n)
题目
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
思路
最初的想法n>0计算res = res*x 计算n次,n<0,将x取倒数后同理,但结果表明计算速度太慢了。
后续应该采用快速幂的算法。这里的本质是分治的思想,
递归:例如当 n = 8 时,x^8 = (x^4)^2 = ((x^2)^2)^2,当n= 9 时x^9 = (x^4)^2*x = ((x^2)^2)^2
迭代:9 = 1001 x^9 = x^(8*1) * x^(4*0) * x^(2 *0)*x^(1*1),因此可以利用n的二进制数来拆分求解
实现
递归
class Solution:
def myPow(self, x: float, n: int) -> float:
if n <0:
x = 1/x
n = -n
def mul(n):
a = n//2
b = n%2
if n == 0:
return 1.0
else:
y = mul(a)
if b == 0:
return y*y
else:
return y*y*x
result = mul(n)
return result
迭代
class Solution:
def myPow(self, x: float, n: int) -> float:
if n <0:
x = 1/x
n = -n
result = 1
while n > 0:
if n%2 == 1:
result *= x
x *= x
n = n//2
return result
leetcode刷题-50Pow(x, n)的更多相关文章
- LeetCode刷题专栏第一篇--思维导图&时间安排
昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...
- leetcode 刷题进展
最近没发什么博客了 凑个数 我的leetcode刷题进展 https://gitee.com/def/leetcode_practice 个人以为 刷题在透不在多 前200的吃透了 足以应付非算法岗 ...
- LeetCode刷题指南(字符串)
作者:CYC2018 文章链接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode+%E9%A2%98%E8%A7% ...
- leetcode刷题记录--js
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
- LeetCode刷题总结之双指针法
Leetcode刷题总结 目前已经刷了50道题,从零开始刷题学到了很多精妙的解法和深刻的思想,因此想按方法对写过的题做一个总结 双指针法 双指针法有时也叫快慢指针,在数组里是用两个整型值代表下标,在链 ...
- Leetcode刷题记录(python3)
Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...
- LeetCode刷题总结-数组篇(上)
数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...
- LeetCode刷题总结-数组篇(中)
本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历 ...
- LeetCode刷题总结-数组篇(下)
本期讲O(n)类型问题,共14题.3道简单题,9道中等题,2道困难题.数组篇共归纳总结了50题,本篇是数组篇的最后一篇.其他三个篇章可参考: LeetCode刷题总结-数组篇(上),子数组问题(共17 ...
随机推荐
- 【Linux】zookeeper-3.5.6启动失败8080端口被占用
通过查看zookeeper的官方文档 1. 可以禁用adminServer 2.可以删除jetty服务
- java web应用启动报错:Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost are already in use.
Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost are already in use. The serve ...
- 链表(python)
一.链表和数组 在编写代码中,我们储存的数据是存储于内存当中,内存就像一块块并列排序的小方盒,每个小方盒都有自己地址,我们储存的数据就在这样一个个小方盒当中. 这些数据存放的结构有两种基本方式,数组和 ...
- C#LeetCode刷题-几何
几何篇 # 题名 刷题 通过率 难度 587 安装栅栏 21.5% 困难 892 三维形体的表面积 C#LeetCode刷题之#892-三维形体的表面积(Surface Area of 3D Sh ...
- Vue 大量data及rules的data选项结构组织
如果Vue文件需要很多的data成员及表单验证,建议使用类似结构 export default{ data(){ const model = { username: 'suzhen', passwor ...
- python设计模式之命令模式
python设计模式之命令模式 现在多数应用都有撤销操作.虽然难以想象,但在很多年里,任何软件中确实都不存在撤销操作.撤销操作是在1974年引入的,但Fortran和Lisp分别早在1957年和195 ...
- G4560 HD610安装黑苹果Hakintosh
这一篇主要是写给使用G4560笔记本折腾黑苹果的朋友. 我折腾了几天黑苹果,发现怎么也无法成功,最后我才知道HD610现在还不支持黑苹果. 由于大多数笔记本不支持屏蔽核显,这意味着要想使用黑苹果必须要 ...
- JavaScript正则、错误处理、操作表单
一.正则表达式:用单个字符串描述或者匹配符合特定语句规则的字符串 一些字符序列组合在一起,可以简单也可以复杂模式的,可以去搜索,可以去替换 二.语法: /表达式/修饰符(可选) var para=/i ...
- Magento1.9 add attribute to catalog product & assign to all attribute set general group
$installer = $this; $attributes = array( 'region' => array( 'type' => 'int', 'input' => 'se ...
- python字符串的常见处理方法
python字符串的常见处理方法 方法 使用说明 方法 使用说明 string[start:end:step] 字符串的切片 string.replace 字符串的替换 string.split 字符 ...