85:Pow(x,n)
来源:互联网 发布:商业地产it管理系统 编辑:程序博客网 时间:2024/06/04 04:20
题目:Implement pow(x, n).
该题有递归和迭代两种解法
解析1:递归方法,代码如下:
// 递归法,时间复杂度 O(logn)// 注意:-5 / 2 = -2, -5 % 2 = -1;class Solution {public: double myPow(double x, int n) { if (n < 0) return myPow_aux(1.0 / x, -n); // 事实上,n 是正数还是负数无关紧要; // n 的作用只是判断要迭代多少次; // 在这种情况下正数和对应的负数都能判断出相同的迭代次数; // 再者如果 n = INT_MIN, -n 也为 INT_MIN; // 所以从最终结果角度讲,没要必要把 n 写成 -n // 但为了便于理解,还是把 n 写成 -n。 return myPow_aux(x, n); }private: double myPow_aux(double x, int n) if (n == 0) return 1; else if (n % 2 != 0) return myPow(x * x, n / 2) * x; else return myPow(x * x, n / 2); }};
解析2:迭代代码如下:
// 迭代法,时间复杂度 O(logn)class Solution {public: double myPow(double x, int n) { if (n < 0) return myPow(1.0 / x, -n) // 事实上,n 是正数还是负数无关紧要; // n 的作用只是判断要迭代多少次; // 在这种情况下正数和对应的负数都能判断出相同的迭代次数; // 再者如果 n = INT_MIN, -n 也为 INT_MIN; // 所以从最终结果角度讲,没要必要把 n 写成 -n // 但为了便于理解,还是把 n 写成 -n。 double result = 1; for (int i = 0; n; ++i) { if (i != 0) x = x * x; if (n % 2 != 0) result *= x; n /= 2; } return result; }};
0 0
- 85:Pow(x,n)
- Pow(x, n) / Super Pow
- LeetCode: Pow(x, n)
- LeetCode Pow(x,n)
- [Leetcode] Pow(x, n)
- LeetCode: Pow(x, n)
- Leetcode: Pow(x,n)
- [LeetCode] Pow(x, n)
- [Leetcode] Pow(x,n)
- Pow(x, n)
- 【leetcode】Pow(x, n)
- Pow(x, n)
- 求 pow(x, n)
- [LeetCode]Pow(x, n)
- Pow(x,n)
- Pow(x, n)
- Pow(x, n)
- [leetcode]Pow(x, n)
- UC/OS-ii任务优先级管理与查找算法
- 19、swift开发iOS——类
- 图片和视频到系统图库
- 创建基于python 3.4的Anaconda新环境
- Tomcat8.0配置JNDI数据源完整例子
- 85:Pow(x,n)
- 基础练习——数列特征
- 20、swift开发iOS——属性
- ASIC开发设计流程
- 将来会有一天回头看,自己曾经在一点点的进步
- HDU
- c#经常用到的知识总结(一)
- 第十周:1. Two Sum
- 【深度学习】Tensorflow学习记录(一) softmax regression mnist训练