【LeetCode】50. pow(x,n) 题解

【LeetCode】50. pow(x,n) 题解 【LeetCode】50.pow ( x , n ) \text{pow}(x,n)pow(x,n)题解Link: https://leetcode.cn/problems/powx-n/实现pow(x, n)即计算x xx的整数n nn次幂函数即x n x^nxn。其中x xx是浮点数n nn是可正可负的32 3232位有符号整数且保证x n x^nxn有意义且绝对值不超过10 4 10^4104。SolutionLink: https://leetcode.cn/problems/powx-n/solutions/3970655/50-powx-n-ti-jie-by-optimistic-bellwju-zpag/1. 题意计算幂函数x n x^nxn。2. 分析核心思路是使用快速幂算法。每一次运算都把指数折半底数变其平方从而减少运算次数将线性阶的时间复杂度降低到对数阶。指数为负数的话就把底数变为倒数然后指数变为相反数即可。唯一需要注意的坑点是有一组测试数据里的指数是− 2147483648 -2147483648−2147483648直接变相反数会溢出。解决方案也很简单将函数签名那里用64 6464位整数储存指数n nn即可。3. 代码publicclassSolution{publicdoubleMyPow(doublex,longn){if(n0){n-n;x1/x;}doubleresult1.0;while(n0){if((n1)1){result*x;}x*x;n1;}returnresult;}}