LeetCode 第50题 Pow(x, n) [log(n)]
来源:互联网 发布:手机直播源码教程 编辑:程序博客网 时间:2024/05/17 13:41
问题描述:
计算 pow(x, n)
,也就是计算 x 的 n次方。
算法思路:
首先来考虑 n 的二进制表示,比如,n 的二进制形式为 ‘10001011’,那么 x^n=x^(1+2+8+128)=x^1*x^2*x^8*x^128
,也就是说 x^n 可以拆成几个数的乘积。在此基础上,可以通过遍历 n 的每一个二进制比特位,如果第 i 个比特是 1,那么我们就在结果上加上 x^(1 << i)
。这样最大时间复杂度为 log(d) ,d 为 n 的二进制长度。
代码如下:
class Solution(object): def myPow(self, x, n): """ :type x: float :type n: int :rtype: float """ def pow(base, exp): result = 1.0 if exp & 1 > 0: result *= base while exp > 0: base *= base exp = exp >> 1 if exp & 1 > 0: result *= base return result if n > 0: return pow(x, n) elif n < 0: return 1/pow(x, -n) else: return 1
0 0
- LeetCode 第50题 Pow(x, n) [log(n)]
- LeetCode 第 50 题 (Pow(x, n))
- 【Leetcode】算法题50 Pow(x,n)
- leetcode 50 : Pow(x, n)
- LeetCode 50: Pow(x, n)
- [leetcode 50] Pow(x, n)
- [Leetcode] 50 - Pow(x, n)
- [LeetCode 50]Pow(x, n)
- leetcode 50 Pow(x, n)
- leetcode || 50、Pow(x, n)
- [leetcode] #50 Pow(x,n)
- LeetCode-50 Pow(x, n)
- Pow(x, n) - LeetCode 50
- Leetcode(50):Pow(x, n)
- LeetCode---(50)Pow(x, n)
- Leetcode #50 Pow(x, n)
- LeetCode(50) Pow(x, n)
- leetcode 50: Pow(x, n)
- 136. Single Number and与、或、异或、取反、左移和右移运算
- [无向图简单环计数 状压DP] Codeforces 11D Beta Round #11 D. A Simple Task
- 两步快速配置java环境
- 构建jscript.debug包
- Hibernate操作表单
- LeetCode 第50题 Pow(x, n) [log(n)]
- POJ 2610 Dog & Gopher G++
- openlayers与echarts3的结合使用
- 一个有趣的题目【二分答案,2-SAT,线段树优化】
- css样式选择器
- Git操作的命令
- Struts的数据处理方式
- [BZOJ4449][Neerc2015][分治][最短路]Distance on Triangulation
- 关于CGI的一些认识