【LeetCode】50. Pow(x, n) (3 solutions)
Pow(x, n)
Implement pow(x, n).
按照定义做的O(n)肯定是TLE的。
利用这个信息:x2n = (xn)2
有个注意点,当n为负是,直接取反是不可行的。
由于int的表示范围是[2-31, 231-1],当n为INT_MIN时,取反会溢出。
因此需要对n==INT_MIN单独考虑。
另外,除以2可以用右移1位来实现。
解法一:递归
class Solution { public:double pow(double x, int n) {if(n < 0){if(n == INT_MIN) //-INT_MIN will cause overflowreturn pow(x, n+1)/x;else{x = 1/x;n = -n;}}return Helper(x, n);}double Helper(double x, int n){//n > 0if(n == 0)return 1;double partRes = Helper(x, n>>1);if(n%2 == 1)return partRes*partRes*x;elsereturn partRes*partRes;} };
解法二:非递归
对于n的二进制表示,考虑每一位的0/1。
举例n==5,二进制表示为101
右数第一位为1,需要乘以x
右数第二位为0,不需要乘以x2
右数第三位为1,需要乘以x4
class Solution { public:double pow(double x, int n) {if(n == 0)return 1;int sign = 1; if(n == INT_MIN)return pow(x, n+1) / x;else if(n < 0){sign *= -1;n *= -1;}double ret = 1;double mul = x;while(n){if(n & 1)ret *= mul;n >>= 1;mul *= mul;}if(sign == 1)return ret;elsereturn 1 / ret;} };
解法三:just a joke
class Solution { public:double pow(double x, int n) {return std::pow(x,n);} };
转载于:https://www.cnblogs.com/ganganloveu/p/4161167.html
【LeetCode】50. Pow(x, n) (3 solutions)相关推荐
- 【LeetCode】剑指 Offer 50. 第一个只出现一次的字符
[LeetCode]剑指 Offer 50. 第一个只出现一次的字符 文章目录 [LeetCode]剑指 Offer 50. 第一个只出现一次的字符 一.哈希表 二.有序哈希表 本题考查哈希表的使用, ...
- 【LeetCode】﹝数学规律ி﹞第N位数字、可怜的小猪
[LeetCode]﹝数学规律ி﹞第N位数字.可怜的小猪 文章目录 [LeetCode]﹝数学规律ி﹞第N位数字.可怜的小猪 乐团站位★ 罗马数字转整数★ 整数转罗马数字★★ 第 N 位数字★★ 数字 ...
- 【Leetcode】Palindrome Number
Determine whether an integer is a palindrome. Do this without extra space. 思路:若使用[Leetcode]Reverse I ...
- 【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java
[LeetCode]Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum dept ...
- 【LeetCode】剑指 Offer 14. 剪绳子
[LeetCode]剑指 Offer 14. 剪绳子 文章目录 [LeetCode]剑指 Offer 14. 剪绳子 两道题目的区别在于第二题 n 的取值范围更大 package offer;publ ...
- 【LeetCode】剑指 Offer 17. 打印从1到最大的n位数
[LeetCode]剑指 Offer 17. 打印从1到最大的n位数 文章目录 [LeetCode]剑指 Offer 17. 打印从1到最大的n位数 一.大数 一.大数 将 1~9 加入队列 对队列中 ...
- 【leetcode】963. Minimum Area Rectangle II
题目如下: Given a set of points in the xy-plane, determine the minimum area of any rectangle formed from ...
- 【LeetCode】第643题——子数组最大平均数I(难度:简单)
[LeetCode]第643题--子数组最大平均数I(难度:简单) 题目描述 解题思路 代码详解 注意点 题目描述 给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数. 示 ...
- 【LeetCode】《剑指Offer》第Ⅴ篇⊰⊰⊰ 39 - 47题
[LeetCode]<剑指Offer>第Ⅴ篇⊰⊰⊰ 39 - 47题 文章目录 [LeetCode]<剑指Offer>第Ⅴ篇⊰⊰⊰ 39 - 47题 39. 数组中出现次数超过 ...
最新文章
- python 字符匹配_python 中如何匹配字符串
- python提取数据包中的文件_Python-对Pcap文件进行处理,获取指定TCP流
- UVALive - 3126 Taxi Cab Scheme(最小路径覆盖-二分图最大匹配)
- keil5函数 默认返回值_Python中如何调用random()函数
- Safari 版本回退方法
- 40个漂亮的单页网站设计案例(上篇)
- java 异常处理 Throwable Error 和Exception
- ARC077C pushpush 递推
- CTFHUB WEB
- 谈谈创业这点事 之 时间窗口
- r语言如何计算t分布临界值_如何利用R语言进行meta分析—详细教程(2)
- DSP 2812: 使用C++封装外设时钟控制
- 移动硬盘打不开(不用格式化)修复方法
- Android Fingerprint属性
- X264 AQ MODE详解
- PR导入视频失败、没有音频解决方法
- 电子地图(gis应用)开发数据来源分析
- 如何应用SPSS的频率分析,分析数值分布规律
- stm32驱动NRF24L01_原理+代码解析
- javaweb后台区分手机或是电脑登录
热门文章
- VMware 从菜鸟到高手系列之基础篇
- DCF模型里面的括号计算方法
- 减少生活中的不确定性
- 我建议您还是不要尝试和外国人讨论文学了,您干不过的。。。还是跟他们拼数学,逻辑,编程比较合适
- UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢
- hybrid app、web app与native app工具
- matlab遍历文件制作自己的数据集 .mat文件
- 浙江大数据交易中心正式上线
- android 之ViewStub
- java new java.text.SimpleDateFormat(yyyyMM01).format(date)