leetcode 随笔 Pow(x, n)

6人阅读 评论(0) 收藏 举报
分类:

--50题 撒花

Implement pow(xn), 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/4 = 0.25

Note:

  • -100.0 < x < 100.0
  • n is a 32-bit signed integer, within the range [−231, 231 − 1]

让你实现pow的函数,也就是指数函数,这里注意指数的范围是INT_MIN 到 INT_MAX,如果直接把负数转换成正数可能会溢出,因为-1*INT_MIN 是比INT_MAX 多一位的,也算是leetcode的老技俩了。

这里用递归实现的,因为一个个乘效率比较低,所以每次都保存一下 x^(n/2)的值

时间复杂度为logN

class Solution {
public:
	 double myPow(double x, int n) {
		 if (n == 1)
			 return x;
		 if (n == 0)
			 return 1;
		 if (n < 0 && x != 0)
		 {
			 int c = n / 2;
			 int i = n % 2;
			 double s = myPow(1/x, -c);
			 return s*s*myPow(1/x, -i);
		 }
		 else
		 {
			 int c = n / 2;
			 int i = n % 2;
			 double s = myPow(x, c);
			 return s*s*myPow(x, i);
		 }
	 }
};
哦,别忘了 x的0次方是1这种情况


查看评论

LeetCode问题 pow(x,n)

实现浮点类型的幂运算,函数原型为: double pow(double x, int n) 下面介绍一下解决该问题的几种方法以及要注意的地方: 1)最直观容易想到的方法就是用递归方法求n个x的乘积,注...
  • fengbingyang
  • fengbingyang
  • 2013-10-02 15:44:56
  • 14170

[LeetCode-50] Pow(x, n)(数值的整数次方)

Implement pow(x, n). Subscribe to see which companies asked this question 【方法一】: 1)最直观容易想到的方法就是用递...
  • xy010902100449
  • xy010902100449
  • 2015-10-29 20:19:39
  • 2921

LeetCode 之 Pow(x, n)(分治法)

LeetCode 之 Pow(x, n),本文给出基于分治算法思想分析与二分实现表达式,最后,贴上C++详细源码实现。...
  • u013630349
  • u013630349
  • 2015-08-04 09:05:26
  • 757

Pow(x, n) -- LeetCode

原题链接: http://oj.leetcode.com/problems/powx-n/  这道题是一道数值计算的题目,因为指数是可以使结果变大的运算,所以要注意越界的问题。如同我在Sqrt(x)这...
  • linhuanmars
  • linhuanmars
  • 2014-02-28 02:05:35
  • 19883

LeetCode(50) Pow(x,n)

题目Implement pow(x, n).Show Tags Show Similar Problems分析一个不利用标准幂次函数的,求幂算法实现。参考了一个很好的解析博客:Pow(x,n)问题详...
  • fly_yr
  • fly_yr
  • 2015-09-01 20:57:51
  • 2431

LeetCode | Pow(x, n)

题目: Implement pow(x, n). 思路: 最简单的办法是根据n进行循环并计算乘积,但是这样的时间开销比较大。最好能够再减少循环次数,例如n4可以表示成(n2)2。将n表示成二进制的格...
  • lanxu_yy
  • lanxu_yy
  • 2013-09-14 16:25:34
  • 4389

leetcode 50. Pow(x, n)-细说边界问题

原题链接:50. Pow(x, n) 【思路-Java】递归实现 采用递归实现,那么本题的终止条件是 n == 0 和 n == 1。这里不采用下面的做法: public class Solution...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016-06-13 11:26:49
  • 2699

50. Pow(x,n) Leetcode Python

Implement pow(x, n). 这题可以用recursive 和iterate 的解法。 解的时候要注意负数。 首先是 recursive的解: class Solution: ...
  • hyperbolechi
  • hyperbolechi
  • 2015-02-04 00:19:52
  • 1475

LeetCode 50 — Pow(x, n)(C++ Java Python)

题目:http://oj.leetcode.com/problems/powx-n/ Implement pow(x, n). 题目翻译:         实现pow(x, n)。 分析:      ...
  • dragon_dream
  • dragon_dream
  • 2014-03-21 11:04:11
  • 2932

[LeetCode74]Pow(x,n)

Implement pow(x, n).
  • sbitswc
  • sbitswc
  • 2014-06-18 04:28:40
  • 2106
    个人资料
    等级:
    访问量: 220
    积分: 233
    排名: 31万+
    文章分类
    文章存档