50 Pow(x, n)(求x的n次方Medium)

题目意思:x为double,n为int,求x的n次方

思路分析:直接求,注意临界条件

 1 class Solution {
 2 public:
 3     double myPow(double x, int n) {
 4         if(x==1.0)return x;
 5         else if(x==-1.0){
 6             if(n%2==0)return 1.0;
 7             else return -1.0;
 8         }
 9         double ans=1.0;
10         int flag=abs(n);
11         while(flag--&&abs(ans)>0.0000001)ans*=x;
12         if(n>0)return ans;
13         else return 1.0/ans;
14     }
15 };

时间复杂度:O(n)

运行时间:20ms

此题并没有用什么算法,有时间再研究

时间: 2024-12-25 16:37:46

50 Pow(x, n)(求x的n次方Medium)的相关文章

[LeetCode] Pow(x, n) 求x的n次方

Implement pow(x, n). 这道题让我们求x的n次方,如果我们只是简单的用个for循环让x乘以自己n次的话,未免也把LeetCode上的想的太简单了,一句话形容图样图森破啊.OJ因超时无法通过,所以我们需要优化我们的算法,使其在更有效的算出结果来.我们可以用递归来折半计算,每次把n缩小一半,这样n最终会缩小到0,任何数的0次方都为1,这时候我们再往回乘,如果此时n是偶数,直接把上次递归得到的值算个平方返回即可,如果是奇数,则还需要乘上个x的值.还有一点需要引起我们的注意的是n有可能

[LintCode] Pow(x, n) 求x的n次方

Implement pow(x, n). Notice You don't need to care about the precision of your answer, it's acceptable if the expected answer and your answer 's difference is smaller than 1e-3. Have you met this question in a real interview? Yes Example Pow(2.1, 3)

50. Pow(x, n)

/* * 50. Pow(x, n) * 2016-5-7 by Mingyang * Divide and Conquer 分成子问题------>recursive * Complexity is log(n), as he is dividing n by half all the way. * 我开始自己写的代码很烂,因为我并没有做到完全的divede成half,因为我不断地重复那个过程 * 后面改进的代码就克服了这个问题 */ public static double myPow1(d

【LeetCode-面试算法经典-Java实现】【050-Implement pow(x, n)(求x的n次方)】

[050-Implement pow(x, n)(求x的n次方)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Implement pow(x, n). 题目大意 求x的n次方. 解题思路 递归求解. 代码实现 算法实现类 public class Solution { public double myPow(double x, int n) { if (x == 0 && n == 0) { throw new IllegalArgumentExcepti

【javascript】50. Pow(x, n)

50. Pow(x, n) javascript使用var声明数据变量,变量没有固定的类型,如果需要使用整数,使用parseInt()进行转换. 1 var myPow = function(x, n) { 2 if(n==0)return 1; 3 if(n<0){ 4 n=-n; 5 x=1/x; 6 } 7 return (n%2==0) ? myPow(x*x,n/2) : (x*myPow(x*x,parseInt(n/2))); 8 };

[LeetCode] 50. Pow(x, n) Java

题目: Implement pow(x, n). Example 1: Input: 2.00000, 10 Output: 1024.00000 Example 2: Input: 2.10000, 3 Output: 9.26100 题意及分析:实现求x的n次方,使用分治法,复杂度降低到log2n 代码: public class Solution { public double myPow(double x, int n) { if(n < 0) return 1/pow(x,-n); e

【Leetcode】50. Pow(x, n)

Implement pow(x, n). Example 1: Input: 2.00000, 10 Output: 1024.00000 Example 2: Input: 2.10000, 3 Output: 9.26100 package medium; public class L50MyPow { // 调用Math.pow() 函数 public double mypow(double x, int n) { double nn = n; return Math.pow(x, nn)

50. Pow(x, n)(js)

50. Pow(x, n) Implement pow(x, n), which calculates x raised to the power n (xn). 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/

[华为机试练习题]50.求M的N次方的最后三位

题目 描述: 正整数M 的N次方有可能是一个非常大的数字,我们只求该数字的最后三位 例1: 比如输入5和3 ,5的3次方为125,则输出为125 例2: 比如输入2和10 2的10次方为1024 ,则输出结果为24 例3: 比如输入111和5 111的5次方为116850581551,则输出结果为551 练习阶段: 初级 代码 /*--------------------------------------- * 日期:2015-07-04 * 作者:SJF0115 * 题目:求M的N次方的最后