剑指Offer #12 数值的整数次方(快速幂)
题目来源:牛客网-剑指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 数值的整数次方(快速幂)相关推荐
- 【LeetCode】剑指 Offer 16. 数值的整数次方
[LeetCode]剑指 Offer 16. 数值的整数次方 文章目录 [LeetCode]剑指 Offer 16. 数值的整数次方 package offer;public class Soluti ...
- 【附可运行代码】剑指 Offer 16. 数值的整数次方
立志用最少的代码做最高效的表达 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn).不得使用库函数,同时不需要考虑大数问题. 示例 1: 输入:x = 2.00000, n = 10 ...
- [剑指Offer]:数值的整数次方(循环解答,快速幂---递归、循环)
文章目录 题目描述 解答思路 题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不同时为0 示例: ...
- 【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 ...
- 《剑指offer》数值的整数次方
题目:给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 分析:熟悉java中Math的话,直接调用即可,深刻说明在常规编程中熟悉java核 ...
- 《剑指Offer》 数值的整数次方
题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 直接调用pow函数 代码: class Solution { pub ...
- 剑指offer——16.数值的整数次方
题目: 实现求base的exponent次方 知识点: 判断奇数还是偶数,a&1==1: 某数除以二,a >>= 1; a>0? res=1:res=2,当满足条件时,选前者 ...
- 剑指 Offer 16. 数值的整数次方
思路:快速幂模板,主要要注意负数的范围,乘以负一的时候会溢出,所以开一下longlong class Solution { public:double myPow(double x, int n) { ...
- 【LeetCode笔记】剑指 Offer 16. 数值的整数次方(Java、分治)
文章目录 题目描述 思路 && 代码 二刷 题目描述 很棒的题目!便于分治思想的理解! 思路 && 代码 分情况是大头- 递归结束的情况: x0x^0x0 = 1 x1 ...
最新文章
- jmeter实现多并发
- angular例子笔记
- Linq to SQL Dynamic 动态查询
- c# 扩展方法奇思妙用高级篇五:ToString(string format) 扩展
- (kruskal算法复习+模板)Eddy's picture
- android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解
- 修改java bean,java – 以编程方式修改Spring bean
- python PyQt5初级教程hello world
- Linux的互斥锁、条件锁的用法
- iPhone is busy: Preparing debugger support for iPhone的解决办法
- 三级数据库考mysql_计算机三级MySQL数据库试题及答案
- jpg格式怎么转换成plt格式的_JPEG格式图片转PLT格式雕刻输出
- 计算机桌面常见故障,电脑常见故障问题以及解决办法
- 有关微博营销的社交营销打法
- java 图片压缩 base64,图片的尺寸 大小压缩 和转化为base64
- 支付宝内部功能调用APP的said说明
- python爬取豆瓣读书,python爬取数据豆瓣读书
- Low-shot Visual Recognition by Shrinking and Hallucinating Features
- 关于笔记本电脑蓝牙设置开关消失的处理方法
- 人工智能学习培训哪家好