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

可莉
• 阅读 535

文章目录

  • 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源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
Souleigh ✨ Souleigh ✨
3年前
Dart 基础
Dart基础1.类型dartStringint整数值,其取值通常位于253和253之间double64bit(双精度)浮点数,符合IEEE754标准。DateTimeMap是一个键值相关的对象。Function可以赋值给变量,也可以当作其他方法的参数。可使用胖箭头。可选位置参
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,
Stella981 Stella981
3年前
LeetCode(94):二叉树的中序遍历
Medium!题目描述:给定一个二叉树,返回它的_中序_遍历。示例:输入:1,null,2,31\2/3输出:1,3,2进阶: 递归算法很简单,你可以通过迭代算法完成吗?解题思路:
Stella981 Stella981
3年前
LeetCode 69 题
1.题目要求实现 intsqrt(intx) 函数。计算并返回 _x_ 的平方根,其中 _x_ 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例1:输入:4输出:2示例2:输入:8输出:2说
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(
Wesley13 Wesley13
3年前
Java基础(二)数据类型
  数据类型主要分为基本类型和引用类型两大类。  一、基本类型  1.基本类型又分为数值类型和boolean类型,  (1)数值类型包括浮点数类型、整数类型和字符类型  整型                                          浮点型(初始化时需要加f或d)  字符类型  byte    
Stella981 Stella981
3年前
Python3 学习手册每日更新
1、数学计算:n的m次方:nmn除以m的整数值:n//mn除以m的浮点值:n/mPython还支持复数,复数由实数部分和虚数部分构成,可以用abj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型tuple的元素不可改变,但它可以包含可变的对象,可变对象中