leetcode第一刷_Pow(x, n)
LeetCode 第一 PoW
2023-09-14 09:08:11 时间
高速乘方的算法,写了好多变,出了各种错,真是服了我自己了。
思想是每次对n减半,将当前的temp平方。须要注意的是假设当前的n是个奇数,减半之后会丢失掉一次乘积,因此假设当前的n为奇数,应该先在结果里面乘一个temp。
还有,n可能是负数,负数的次方最后要求一次倒数。
class Solution { public: double pow(double x, int n) { if(n == 0) return 1; if(n == 1) return x; double res = 1, temp = x; bool neg = false; if(n<0){ neg = true; n = -n; } while(n>0){ if(n&1) res *= temp; temp *= temp; n /= 2; } if(neg) return (double)1.0/res; return res; } };
相关文章
- Java实现 LeetCode 676 实现一个魔法字典(暴力)
- Java实现 LeetCode 654 最大二叉树(递归)
- Java实现 LeetCode 363 矩形区域不超过 K 的最大数值和
- LeetCode(16):最接近的三数之和
- Leetcode.剑指 Offer II 022 链表中环的入口节点
- Leetcode 1218. 最长定差子序列(提供一种思路)
- LeetCode 整数转罗马数字(执行用时: 12 ms , 在所有 C++ 提交中击败了 32.38% 的用户)
- Leetcode 1078. Bigram 分词
- [LeetCode] 739. 每日温度 ☆☆☆(栈)
- leetcode 389. Find the Difference
- 【Leetcode刷题Python】剑指 Offer 49. 丑数
- 【Leetcode刷题Python】718. 最长重复子数组