【LeetCode每天一题】Pow(x, n)(平方)
Implement pow(x, n), which calculates x raised to the power n (x,n).
Example 1: Input: 2.00000, 10 Output: 1024.00000
Example 2: Input: 2.10000, 3 Output: 9.26100
Example 3: Input: 2.00000, -2 Output: 0.25000 Explanation: 2-2 = 1/22 = 1/4 = 0.25
Note:
- -100.0 < x < 100.0
- n is a 32-bit signed integer, within the range [−231, 231 − 1]
思路: 这道题并不难,主要是情况考虑周全,例如 n为负数, x为0,1时等等问题。
使用最简单的方法就是逐个累乘, 但是这种方法会在 n值非常大时,运行时间太长,导致超时。并且效率低。
另外一种使用 这样一种公式来解决: an= an/2 + an/2 (当n为偶数时), an= (an/2 + an/2)a (当n为奇数时),这样计算效率提升。 时间复杂度为O(logn), 空间复杂度为O(1)。
class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
if x == 1.0 or x == 0.0: # 特殊情况的判断
return x if x == 1.0 else 0.0
neg_flag = False # 指数为负数的标志位
if n < :
neg_flag = True
n = abs(n) # 将负指数替换为正整数
res =
while n:
if n&: # 对于指数奇偶数的判断。
res *= x
x *= x # x = x * x
n = n >> # 指数除以2
if neg_flag:
return /res
return res
【LeetCode每天一题】Pow(x, n)(平方)的更多相关文章
- 【JavaScript】Leetcode每日一题-平方数之和
[JavaScript]Leetcode每日一题-平方数之和 [题目描述] 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 示例1: 输入:c = 5 ...
- leetcode 第188题,我的解法,Best Time to Buy and Sell Stock IV
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- leetcode第37题--Count and Say
题目:(据说是facebook的面试题哦) The count-and-say sequence is the sequence of integers beginning as follows:1, ...
- LeetCode第[18]题(Java):4Sum 标签:Array
题目难度:Medium 题目: Given an array S of n integers, are there elements a, b, c, and d in S such that a + ...
- LeetCode第[1]题(Java):Two Sum 标签:Array
题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...
- LeetCode的刷题利器(伪装到老板都无法diss你没有工作)
在工程效率大行其道的今天,如果不会写点代码以后也不容易在测试圈混下去.今天给大家推荐一个LeetCode的刷题利器,可以伪装到连你老板在这里走过去都无法确认你是在干活呢,还是在干活呢. LeetCod ...
- LeetCode每天一题之两数之和
这个LeetCode刷题系列的博客权当是为自己记一下笔记吧.博客系列会从LeetCode的第一题开始刷,同时会从零开始学习[因为我就是零/(ㄒoㄒ)/~~].同时,如果有写错的地方,希望大佬们在评论区 ...
- leetcode第三题
leetcode第三题: 题目: 给定一个字符串,找出不含有重复字符的最长子串的长度. 源码(使用java语言): class Solution { public int lengthOfLonges ...
- [LeetCode] 系统刷题5_Dynamic Programming
Dynamic Programming 实际上是[LeetCode] 系统刷题4_Binary Tree & Divide and Conquer的基础上,加上记忆化的过程.就是说,如果这个题 ...
- LeetCode 第 342 题(Power of Four)
LeetCode 第 342 题(Power of Four) Given an integer (signed 32 bits), write a function to check whether ...
随机推荐
- Django之ORM版学员管理系统
班级表 表结构 class Class(models.Model): id = models.AutoField(primary_key=True) # 主键 cname = models.CharF ...
- B - Space Ant
The most exciting space discovery occurred at the end of the 20th century. In 1999, scientists trace ...
- A - Wall
Once upon a time there was a greedy King who ordered his chief Architect to build a wall around the ...
- 现在越来越喜欢用ajax传值了,这样能让网站的体验性很好,今天就总结了一下常用的
这是不用循环的方法 就是传过来的是一位数组 //编辑党建分类 function gk_bj(id){ $.post("{:U('Luser/lei_edlt')}",{id:id} ...
- thinkphp 点击某个class提交post值,返回回来用一个弹窗插件,提示返回来要说的话
下一篇文章有讲到弹窗插件的怎么使用,自写教程 如果能帮到你,给点个赞鼓励一下 <============= 控制器 =================> public function ...
- [No0000150]VSVisualStudio提示图标,信号图标的含义
其右侧的图标表示这是一个接口类型__interface(或者是结构体类型) 其右侧图标表示这是一个类类型 其右侧图标表示这是一个.cpp文件(貌似还可以是.hpp等文件) 其右侧图标表示这是一个枚举类 ...
- C# RichTextBox的用法
https://www.cnblogs.com/arxive/p/5725570.html
- [git] 关闭 git branch 的pager
高版本的git做了pager的调整. git diff git log git branch 等命令都用了pager, 默认的pager用了less 在我的应用里, 通常branch只有那么3,5个. ...
- [daily] 像tcpdump一样监听unix domain socket
如题. 见: https://superuser.com/questions/484671/can-i-monitor-a-local-unix-domain-socket-like-tcpdump? ...
- [skill][telnet] 用telnet获取一个网页
一直也搞不懂, telnet到底是干嘛用的. 然而, 它可以得到一个网页. /home/tong/Data/performance_test [tong@T7] [:] > telnet nyu ...