题目描述:

实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例 1:

输入: 2.00000, 10
输出: 1024.00000

示例 2:

输入: 2.10000, 3
输出: 9.26100

示例 3:

输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25

说明:

-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

题目链接:https://leetcode-cn.com/problems/powx-n


解题思路1:

1、采用快速幂的做法,如果 n 是偶数,则 Pow(x, n) = Pow(x, n/2) * Pow(x, n/2)
如果 n是奇数,则 Pow(x, n) = Pow(x, n-1) * x
2、需要注意一些特殊情况,当 n<0, n=0, n=1 的情况需要提前处理


代码1:

class Solution(object):def myPow(self, x, n):if n < 0:x = 1.0/xn *= -1elif n == 0:return 1elif n == 1:return xif ( n % 2 == 0):half = self.myPow(x, n/2)return half * halfelse:return (self.myPow(x, n-1)) * x

测试代码示例:

s = Solution()
x = 2.00000
y = -2
print(s.myPow(x,y))

代码2:

#include<iostream>
using namespace std;double myPow(double x, long n) {if(n<0){x = 1.0/x;n *= -1;}else if(n==0){return 1;}else if(n==1){return x;}if(n%2==0){double half = myPow(x, n/2);return half*half;}else{return myPow(x, n-1) * x;}
}int main()
{double x;long y;x = 2.00000;y = -2;cout << myPow(2.00000,-2) << endl;return 0;}

解题思路2:

使用递归算法解决


python:

class Solution(object):def myPow(self, x, n):if n == 0: return 1if n < 0:  return 1/self.myPow(x, -n)ans = self.myPow(x, n/2)if n % 2 == 0:return ans*anselse:return ans*ans*x

来源于: leetcode

class Solution:def myPow(self, x, n):def quickMul(N):if N == 0:return 1.0y = quickMul(N // 2)return y * y if N % 2 == 0 else y * y * xreturn quickMul(n) if n >= 0 else 1.0 / quickMul(-n)

C++:

//递归算法
class Solution {public:double myPow(double x, long n) {if(n == 0) return 1;if(n < 0) return 1/myPow(x,-n);double ans = myPow(x,n/2);if(n % 2 == 0){return ans*ans;}else{return ans*ans*x;}}
};

解题思路3: 暴力方法,超出时间限制

class Solution {public:double myPow(double x, int n) {int sign = (n > 0)?1:-1;double ans = 1;n = abs(n);while(n-- > 0)ans *= x;return (sign == 1)?ans:1/ans;}
};

参考链接:
leetcode 50. Pow(x, n)

leetcode--50--Pow(x, n)相关推荐

  1. 【分治】LeetCode 50. Pow(x, n)

    LeetCode 50. Pow(x, n) Solution1:我的答案 偷鸡摸狗的做法 class Solution { public:double myPow(double x, int n) ...

  2. c语言的 pow函数是快速幂吗,leetcode 50. Pow(x, n)(快速幂)

    就是一个二分法快速幂. 但是需要注意的问题是这里是实数,而且n可能为负. int的范围是-2,147,483,648 至 2,147,483,647.如果为-2,147,483,648那么直接n=-n ...

  3. Leetcode 50. Pow(x, n)

    50. Pow(x, n) Total Accepted: 96891 Total Submissions: 348858 Difficulty: Medium Implement pow(x, n) ...

  4. LeetCode 50. Pow(x, n)(二分查找)

    文章目录 1. 题目 2. 二分查找 2.1 递归 2.2 循环 1. 题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 输入: 2.00000, 10 输出: 1024.000 ...

  5. leetCode 50.Pow(x, n) (x的n次方) 解题思路和方法

    Pow(x, n) Implement pow(x, n). 思路:题目不算难.可是须要考虑的情况比較多. 详细代码例如以下: public class Solution {public double ...

  6. leetcode 50. Pow(x, n) 快速幂

    好像没怎么快 #include <iostream> #include <math.h> using namespace std;class Solution {public: ...

  7. leetcode 50. Pow(x,n)

    题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 解法 快速幂 利用二进制运算的性质 class Solution {public:double myPow(double x, int ...

  8. [Leetcode]50. Pow(x, n)

    Implement pow(x, n). 我的做法就比较傻了.排除了所有的特殊情况(而且double一般不可以直接判断==),然后常规情况用循环来做.- -||| 直接用循环,时间复杂度就比较大.应该 ...

  9. leetcode || 50、Pow(x, n)

    problem: Implement pow(x, n). Hide Tags Math Binary Search 题意:求x的n次幂 thinking: (1)最简单想到的是直观上的数学幂函数求法 ...

  10. 【LeetCode】50. Pow(x, n) (3 solutions)

    Pow(x, n) Implement pow(x, n). 按照定义做的O(n)肯定是TLE的. 利用这个信息:x2n = (xn)2 有个注意点,当n为负是,直接取反是不可行的. 由于int的表示 ...

最新文章

  1. Bootstrap笔记(记录不会的知识)
  2. 2.10. 代码片段:demo方法(Core Data 应用程序实践指南)
  3. Linux之vim的使用
  4. s插件——SlimScroll滚动美化插件
  5. linux ssl 证书服务器,Linux下Nginx安全证书ssl配置方法
  6. [linux]makefile使用
  7. 点云插值:三维平面参数确定-不共线三点的平面方程
  8. CXF与Web项目集成---without Spring
  9. 【机器学习】逻辑回归—良/恶性乳腺癌肿瘤预测
  10. dos命令行设置网络优先级_网络安全之木马病毒的防范以及攻击
  11. Redis数据结构之列表
  12. php扩展zval,PHP扩展开发(7):zval结构
  13. 安装SQL Server 2016及一些常用操作
  14. CSR8615蓝牙芯片功能调试入门笔记---上
  15. 腾讯云学生机介绍—校园扶持计划
  16. 三维空间刚体变换:欧拉角、旋转向量、四元数
  17. 中南大学计算机学院复试2021,34所自划线院校2021考研复试分数线-2021中南大学考研分数线已公布...
  18. P2002 消息扩散(图论 Tarjan缩点)
  19. [Web端接入经验分享] 腾讯云即时通信TIM、实时音视频TRTC
  20. 2023轻薄投影仪选哪款?极米Z6X Pro成年轻人租房首选投影

热门文章

  1. 使用Js和H5绘制流程图
  2. BUUCTF msic 专题(73)john-in-the-middle
  3. Unity之我写的象棋
  4. Kinect+OpenNI学习笔记之8(Robert-Walter手部提取代码的分析)
  5. 【关于Element UI中el-autocomplete组件】一、el-autocomplete组件添加底部固定按钮
  6. Android(仿QQ登入+网易新闻)
  7. 西门子S7-200 SMART 通过ModbusTcp通信注意点
  8. 一个免费的私有代码托管
  9. ffmpeg——在Windows平台上面使用的一个坑
  10. DevOps 致简之道 —— MaxCloud + EKS 让开发回归开发