(算法分析Week3)Pow(x,n)[Medium]
2017-09-23 22:06
411 查看
50. Pow(x, n)
Description
Implement pow(x, n).就是实现幂函数。
Solution
最直观的想法是递归,每次x*pow(x, n-1),觉得会超时,没写。然后想着循环,试了一下,超时。
考虑到n个x相乘式子的对称关系,每次循环x*=x,可以把复杂度降到O(logn)
Complexity analysis
O(logn)Code
class Solution { public: double myPow(double x, int n) { if (n < 0) { x = 1/x; n = -n; } // if (n == 0) // return 1.0; unsigned long long p = n; //long long 是重点! double result = 1; while (p) { if (p & 1) { result *= x; } x *= x; p >>= 1; } return result; } };
Result
相关文章推荐
- (算法分析Week15)2 Keys Keyboard[Medium]
- 算法分析与设计丨第四周丨LeetCode(7)——Find Bottom Left Tree Value(Medium)
- (算法分析Week15)Best Time to Buy and Sell Stock with Cooldown[Medium]
- (算法分析Week19)Longest Substring Without Repeating Characters 最长无重复子串 [Medium]
- (算法分析Week18)Subsets[Medium]
- 算法设计与分析(8)-- Container With Most Water(难度:Medium)
- (算法分析Week16)Accounts Merge[Medium]
- 算法分析与设计丨第十四周丨LeetCode(18)——Maximum Subarray(Medium)
- (算法分析Week12)Count Numbers with Unique Digits[Medium]
- (算法分析Week16)132 Pattern[Medium]
- (算法分析Week11)Swap Nodes in Pairs[Medium]
- (算法分析Week12)Unique Paths[Medium]
- 算法分析与设计丨第六周丨LeetCode(9)——Course Schedule(Medium)
- 算法分析与设计课程06——542. 01 Matrix(Medium)
- [算法分析与设计] leetcode 每周一题: 050. Pow(x, n)
- (算法分析Week1)Different Ways to Add Parentheses[Medium]
- 算法分析与设计课程09——474. Ones and Zeroes(Medium)
- (算法分析Week13)Combination Sum IV[Medium]
- (算法分析Week12)Unique Paths II[Medium]
- (算法分析Week14)Arithmetic Slices[Medium]