文章目录

  • 1. 题目
  • 2. 二分查找
    • 2.1 递归
    • 2.2 循环

1. 题目

实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例
输入: 2.00000, 10
输出: 1024.00000

示例
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/powx-n
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

《剑指Offer》同题:面试题16. 数值的整数次方…

2. 二分查找

类似题解:LeetCode 372. 超级次方(快速幂)

2.1 递归

class Solution {public:double myPow(double x, int n) {if(n == 0) return 1.0;long N = n;if(N < 0){x = 1/x;N = -N;}return POW(x, N);}double POW(double x, int N) {if(N == 0)    return 1.0;double half = POW(x, N/2);if(N%2 == 0)return half*half;elsereturn half*half*x;}
};
class Solution {//超时,0.00001,2147483647unordered_map<int ,double> m;
public:double myPow(double x, int n) {if(n == 0)return 1.0;long N = n;if(n < 0){x = 1/x;N = -(long)n;//INT_MIN换号后溢出}return MyP(x, N);}double MyP(double x, long N) {if(N == 0)return 1.0;if(N%2 == 0){if(m.count(N))return m[N];double a = MyP(x, N/2)*MyP(x, N/2);m[N] = a;return a;}else{if(m.count(N))return m[N];double b = MyP(x, N/2)*MyP(x, N/2)*x;m[N] = b;return b;}}
};

2.2 循环

class Solution {public:double myPow(double x, int n) {if(n == 0) return 1.0;long N = n;if(N < 0){x = 1/x;N = -N;}double ans=1;double product = x;for(long i = N; i; i /= 2){if(i % 2 == 1)ans *= product;product *= product;}return ans;}
};

LeetCode 50. Pow(x, n)(二分查找)相关推荐

  1. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)

    LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...

  2. 【分治】LeetCode 50. Pow(x, n)

    LeetCode 50. Pow(x, n) Solution1:我的答案 偷鸡摸狗的做法 class Solution { public:double myPow(double x, int n) ...

  3. c语言的 pow函数是快速幂吗,leetcode 50. Pow(x, n)(快速幂)

    就是一个二分法快速幂. 但是需要注意的问题是这里是实数,而且n可能为负. int的范围是-2,147,483,648 至 2,147,483,647.如果为-2,147,483,648那么直接n=-n ...

  4. 【Leetcode | 顺序刷题 】二分查找目录

    二分查找 序号 题号 1 29. 两数相除   50. Pow(x, n)   69. x 的平方根                                                   ...

  5. LeetCode算法题4:二分查找及扩展应用

    文章目录 前言 一.二分查找 二.第一个错误的版本 三.搜索插入位置 总结 前言 Leetcode算法系列:https://leetcode-cn.com/study-plan/algorithms/ ...

  6. LeetCode面试刷题技巧-二分查找算法代码思路解析

    二分查找的思想 提及二分查找算法,我想大部分人都不陌生,就算不是学计算机的,基本上也都使用过二分查找的思想,不信的话,且听我慢慢为你道来. 不知道你有没有玩过这样一个游戏,猜数字.就是说一个人心里想了 ...

  7. LeetCode 1891. 割绳子(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组 ribbons 和一个整数 k,数组每项 ribbons[i] 表示第 i 条绳子的长度. 对于每条绳子,你可以将任意切割成一系列长度为 ...

  8. LeetCode 911. 在线选举(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 在选举中,第 i 张票是在时间为 times[i] 时投给 persons[i] 的. 现在,我们想要实现下面的查询函数: TopVotedCandida ...

  9. LeetCode 162. 寻找峰值(二分查找)

    1. 题目 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返回任何一 ...

最新文章

  1. Vscode 调试 Flutter 项目
  2. CNN阴影去除--DeshadowNet: A Multi-context Embedding Deep Network for Shadow Removal
  3. Android 获取当前日期距离过期时间的日期差值的完整方法直接使用
  4. CouldNOTfindQt4 install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
  5. SAP UI5 Web Component for React的图标和图片处理
  6. one order event handling - 初始化过程
  7. 拼接大屏数据展示_可视化大屏的UI设计是根据哪几个方面来进行?
  8. !!超级筹码理论总结
  9. 一波圣诞美陈设计素材,值得收藏哦!
  10. 10条设计师应该知道的字体设置技巧
  11. 动态IP和静态IP地址
  12. javascript实现前程无忧的选择城市
  13. 来自陈沙克日志的收藏
  14. 践行社会责任 | 华云数据荣登2021新型实体企业百强榜 用创新技术服务实体经济
  15. 华为计算机黑屏怎么办,华为电脑开机屏幕没反应(开机黑屏的3个原因及解决法)...
  16. 计算机运行库,VC2010运行库
  17. Hexo博客安装卡在“INFO install dependencies”解决方法
  18. java中间件学习1-java中间件的定义
  19. matplotlib.pyplot 库(一)
  20. 乐优商城之分类查询品牌查询(八)

热门文章

  1. 信息摘要技术及算法介绍
  2. gcc、clang、make、cmake、makefile、CMakeLists.txt概念学习
  3. 【解决问题】OpenCV(3.4.1) Error: Parsing error (xx.yaml(13): Incorrect indentation) in icvYMLParseValue
  4. 一个人成为废材的9大原因
  5. C语言程序返回值为int的时候,不同值代表不同的意义
  6. Introducing the ClearGLASS App on ClearOS
  7. Qt setMargin()和setSpacing() 的含义
  8. 04_类与对象_课程动手动脑问题以及课后实验性问题及解答集锦
  9. 数据结构_二叉树遍历
  10. 从大学到结婚,我和小云的这13年