16. 数值的整数次方(剑指 Offer 题解Java版)

可莉
• 阅读 672

文章目录

  • 16. 数值的整数次方

  • 题目链接

  • 题目描述

  • 解题思路

  • 实现代码

16. 数值的整数次方

题目链接

NowCoder

题目描述

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

解题思路

      下面的讨论中 x 代表 base,n 代表 exponent。

      比如,我们求n的32次方,我们先知道n 的16次方,在16次方的基础上再平方就可以,同理,我们可以先求8次方,4次方,2次方,因此我们求32次方就变成了先求平方,在此基础上求4次方,再求8次方,再求16次方,最后就可以求得32次方。
我们提出如下的公式:
16. 数值的整数次方(剑指 Offer 题解Java版)
      因为 (x*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。

实现代码

package 数值的整数次方;/*作者     :XiangLin创建时间 :27/03/2020 17:00文件     :Solution.javaIDE      :IntelliJ IDEA*/public class Solution {    public double power(double base,int exponent){        if (exponent == 0)            return 1;        if (exponent == 1)            return base;        boolean isNagivate = false;        if (exponent < 0){             isNagivate = true;             exponent = -exponent;        }        double pow = power(base * base,exponent/2);        if (exponent % 2 != 0){             pow = pow * base;        }        return isNagivate? 1 / pow : pow;    }    public static void main(String[] args) {        Solution solution = new Solution();        System.out.println(solution.power(2.2,5));    }}

16. 数值的整数次方(剑指 Offer 题解Java版)
16. 数值的整数次方(剑指 Offer 题解Java版)
个人微信公众号,专注于学习资源、笔记分享,欢迎关注。我们一起成长,一起学习。一直纯真着,善良着,温情地热爱生活。
16. 数值的整数次方(剑指 Offer 题解Java版)
Don’t be in a hurry to grow up. Hold on to being a boy as long as you can.
不要急着长大,尽可能地做一个孩子吧。

本文分享自微信公众号 - 五角钱的程序员(xianglin965)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
LeetCode
一目录不折腾的前端,和咸鱼有什么区别目录一目录二题目三解题思路四统计分析五解题套路二题目在一个nm的二维数组中:每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例
Stella981 Stella981
3年前
279. 完全平方数 leetcode JAVA
题目:给定正整数 _n_,找到若干个完全平方数(比如 1,4,9,16,...)使得它们的和等于_n_。你需要让组成和的完全平方数的个数最少。示例 1:输入:_n_12输出:3解释:12444.示例2:输入:_n_13输出:2解释:134
Stella981 Stella981
3年前
LeetCode 5561. 获取生成数组中的最大值
文章目录1\.题目2\.解题1\.题目给你一个整数n。按下述规则生成一个长度为n1的数组nums:nums00nums11当2<2i<n时,nums2inumsi
Wesley13 Wesley13
3年前
mysql常用函数大全
一、数学函数ABS(x)返回x的绝对值BIN(x)返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x)返回大于x的最小整数值EXP(x)返回值e(自然对数的底)的x次方FLOOR(x)返回小于x的最大整数值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,
Wesley13 Wesley13
3年前
C++ 2的幂次方表示
【题目描述】任何一个正整数都可以用2的幂次方表示。例如:137272320同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)2(3)2(0)进一步:722220(21用2表示)3220所以最后137可表示为:2(2(2)22(0))2(22(
Stella981 Stella981
3年前
Python3 学习手册每日更新
1、数学计算:n的m次方:nmn除以m的整数值:n//mn除以m的浮点值:n/mPython还支持复数,复数由实数部分和虚数部分构成,可以用abj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型tuple的元素不可改变,但它可以包含可变的对象,可变对象中
贾蔷 贾蔷
1个月前
NOIP 2000 提高组 洛谷1004题(方格取数)解题思路与C++代码解析
一、题目描述简要描述题目:例如,在一个n×n的方格图中,每个格子包含一个正整数。需要选择两条从左上角到右下角的路径,路径可重复经过格子,但两条路径除起点和终点外不能相交。求两条路径数字和的最大值。二、解题思路与算法分析1.问题分析1.问题核心是求解两条不交
深度学习 深度学习
3星期前
洛谷P2034题解:动态规划+单调队列优化求解最大K段子段和问题
一、题目解读洛谷P2034题目要求给定一个长度为n的整数数组,将其分成不超过k段,求各段和的最大值。该问题属于经典动态规划问题的扩展,需结合优化技巧高效求解。二、解题思路采用动态规划单调队列优化的策略。核心思想是定义状态dp
深度学习 深度学习
1星期前
NOIP 2008火柴棒等式题解(C++代码实现) 动态规划与枚举算法详解
一、题目解读问题(,)要求使用给定数量的火柴棒,构造形如ABC的等式,其中A、B、C均为整数,且火柴棒总数恰好等于输入值。需统计符合条件的等式数量。题目核心在于将数字拆解与火柴棒消耗建模为数学问题,寻找高效解法。二、解题思路采用火柴棒计数策略:1.关系
深度学习 深度学习
1天前
2015年蓝桥杯国赛C组机器人繁殖题解析:高精度整数代码实现与解题思路
一、题目解读2015年C组“机器人繁殖”问题要求求解机器人按月繁殖的累计数量。题目设定初始机器人数量为a,每月新增b台,需计算n个月后总机器人数。由于繁殖数量可能呈指数级增长,普通整数类型无法存储结果,因此需采用高精度整数运算解决。二、解题思路核心在于自定