题目来源:牛客网-剑指Offer专题
题目地址:数值的整数次方

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

保证base和exponent不同时为0

题目解析

像这种求 ana^nan 的题目,第一时间想到的必须是快速幂,时间复杂度 O(logn)O(logn)O(logn) 妥妥的,别再用那种 O(n)O(n)O(n) 算法了。

如果不会快速幂的小伙伴,推荐看看这篇文章: 数论基础之快速幂(详细教程)。

当然,这道题还没有那么简单,和我们平时做的数论题目不一样的是,这里的 nnn 有可能是负数
设 nnn 为正数,则 −n-n−n 为负数,我们就可以做如下简单处理:
a−n=(an)−1a^{-n}=(a^n)^{-1} a−n=(an)−1
我们先求出 ans=a∣n∣ans=a^{|n|}ans=a∣n∣ :

  • 如果 nnn 为正数,则 ansansans 就是最终答案;
  • 如果 nnn 为负数,则最终答案为 ans−1ans^{-1}ans−1

代码如下:

public class Solution {public double Power(double base, int exponent) {int n = Math.abs(exponent);double ans = 1;while (n != 0) {if (n % 2 == 1) {ans *= base;}base *= base;n /= 2;}return exponent > 0 ? ans : (1 / ans);}
}

如果只是为了通过的话,你也可以用下面这种没有灵魂的写法:

public class Solution {public double Power(double base, int exponent) {return Math.pow(base, exponent);}
}

如果本文对你有所帮助,要记得点赞哦~

剑指Offer #12 数值的整数次方(快速幂)相关推荐

  1. 【LeetCode】剑指 Offer 16. 数值的整数次方

    [LeetCode]剑指 Offer 16. 数值的整数次方 文章目录 [LeetCode]剑指 Offer 16. 数值的整数次方 package offer;public class Soluti ...

  2. 【附可运行代码】剑指 Offer 16. 数值的整数次方

    立志用最少的代码做最高效的表达 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn).不得使用库函数,同时不需要考虑大数问题. 示例 1: 输入:x = 2.00000, n = 10 ...

  3. [剑指Offer]:数值的整数次方(循环解答,快速幂---递归、循环)

    文章目录 题目描述 解答思路 题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不同时为0 示例: ...

  4. 【leetcode】剑指 Offer 16. 数值的整数次方(shu-zhi-de-zheng-shu-ci-fang-lcof)(快速幂)[中等]

    链接 https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/ 耗时 解题:6 min 题解:6 min 题意 实现 po ...

  5. 《剑指offer》数值的整数次方

    题目:给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 分析:熟悉java中Math的话,直接调用即可,深刻说明在常规编程中熟悉java核 ...

  6. 《剑指Offer》 数值的整数次方

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 直接调用pow函数 代码: class Solution { pub ...

  7. 剑指offer——16.数值的整数次方

    题目: 实现求base的exponent次方 知识点: 判断奇数还是偶数,a&1==1: 某数除以二,a >>= 1; a>0? res=1:res=2,当满足条件时,选前者 ...

  8. 剑指 Offer 16. 数值的整数次方

    思路:快速幂模板,主要要注意负数的范围,乘以负一的时候会溢出,所以开一下longlong class Solution { public:double myPow(double x, int n) { ...

  9. 【LeetCode笔记】剑指 Offer 16. 数值的整数次方(Java、分治)

    文章目录 题目描述 思路 && 代码 二刷 题目描述 很棒的题目!便于分治思想的理解! 思路 && 代码 分情况是大头- 递归结束的情况: x0x^0x0 = 1 x1 ...

最新文章

  1. jmeter实现多并发
  2. angular例子笔记
  3. Linq to SQL Dynamic 动态查询
  4. c# 扩展方法奇思妙用高级篇五:ToString(string format) 扩展
  5. (kruskal算法复习+模板)Eddy's picture
  6. android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解
  7. 修改java bean,java – 以编程方式修改Spring bean
  8. python PyQt5初级教程hello world
  9. Linux的互斥锁、条件锁的用法
  10. iPhone is busy: Preparing debugger support for iPhone的解决办法
  11. 三级数据库考mysql_计算机三级MySQL数据库试题及答案
  12. jpg格式怎么转换成plt格式的_JPEG格式图片转PLT格式雕刻输出
  13. 计算机桌面常见故障,电脑常见故障问题以及解决办法
  14. 有关微博营销的社交营销打法
  15. java 图片压缩 base64,图片的尺寸 大小压缩 和转化为base64
  16. 支付宝内部功能调用APP的said说明
  17. python爬取豆瓣读书,python爬取数据豆瓣读书
  18. Low-shot Visual Recognition by Shrinking and Hallucinating Features
  19. 关于笔记本电脑蓝牙设置开关消失的处理方法
  20. 人工智能学习培训哪家好

热门文章

  1. (68)自旋锁 , cmpxchg8b 指令
  2. WIN32多线程抢红包练习
  3. 2020-11-20(页帧)
  4. 一次SSH爆破攻击haiduc工具的应急响应
  5. 【网络安全】Nacos Client Yaml反序列化漏洞分析
  6. Python借助队列实现进程通信
  7. C语言在不引入第三变量下交换俩数
  8. Java多线程(3)—生产者/消费者
  9. Linux之磁盘概述
  10. mybatisplus自动生成id_mybatisPlus自动代码生成实例(超级简单使用)