专栏首页Java那些事每天一道剑指offer-牛客网数值的整数次方

每天一道剑指offer-牛客网数值的整数次方

辣条走起,每个月的刷题99元奖励靠大家了

前言

今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。

昨天的题解

题目

每天一道剑指offer-牛客网数值的整数次方 来源:牛客网对应专题

题目详述

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

题目详解

思路

  • 就是穷举,把所有可能穷举出来,然后对每一种情况处理。

代码

public class Solution {
    public double Power(double base, int exponent) {
        if(exponent == 0)//指数如果是0
        {
            if(equalZero(base) == true)//底数是0则返回0
                return 0;
            return 1;//除了0的任何数的0次方是1
        }
        if(exponent > 0)//指数大于0
        {
            return complex(base,exponent);//直接计算base的exponent次方返回即可
        }
        if(equalZero(base))//底数是0,指数小于0,因为如果指数大于0,在前面已经返回了!
        {
            if(base > 0)//底数是正0,那么就是正无穷
                return Double.POSITIVE_INFINITY;
            if(exponent % 2 == 0)//指数是偶数次方
                return Double.POSITIVE_INFINITY;//返回正无穷
            return Double.NEGATIVE_INFINITY;//其它结果负无穷
        }
        return 1 / complex(base,exponent);//可以知道除了上述结果,其它都是指数是负数。比如2的-3次方,先计算2的3次方,最后求倒数。
    }
    double complex(double base,int exponent)
    {
        double result = 1.0;
        if(exponent < 0)//如果指数小于0,比如2的-3次方,先计算2的3次方,然后求倒数
            exponent = 0 - exponent;
        for(int i=0;i<exponent;i++)
            result = result * base;
        return result;
    }
    boolean equalZero(double base)
    {//判断一个doule类型的数是不是0,必须这样判断,不能直接与0进行比较,因为浮点数本身不精确
        if(base >0 && base < 0.00000001)
            return true;
        if(base < 0 && base > -0.00000001)
            return true;
        return false;
    }
}

代码截图(为了避免代码排版错乱

本文分享自微信公众号 - 程序员乔戈里(CXYqiaogeli),作者:乔戈里qgl

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 面试官:优化代码中大量的if/else,你有什么方案?

    一个快速迭代的项目,时间久了之后,代码中可能会充斥着大量的if/else,嵌套6、7层,一个函数几百行,简!直!看!死!人!

    乔戈里
  • 每天一道剑指offer-整数中1出现的次数

    求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次...

    乔戈里
  • 每天一道leetcode-104.二叉树的最大深度

    今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426

    乔戈里
  • 专家:大数据关注what(相关性)比why(因果关系)更重要?

    很早的时候,我们一提到大数据都会把他形容成数据大的代名词,此前由于服务器厂商为了销售更多的硬件设备也把大数据跟数据中心联合起来,一时间市场上传递出来关于大数据的...

    人称T客
  • 大型项目技术栈第九讲 kaptcha的使用

    ​ kaptcha是基于配置的方式来实现生成验证码的,通过该插件根据生成规则可以自动的将验证码字符串转变成图片流返回给请求发送端,同时可以通过配置文件方式,将生...

    易兮科技
  • Android自定义流式布局/自动换行布局实例

    最近,Google开源了一个流式排版库“FlexboxLayout”,功能强大,支持多种排版方式,如各种方向的自动换行等,具体资料各位可搜索学习^_^。

    砸漏
  • Wojilu学习笔记 (02)

    阿炬
  • 二叉树的最小深度

    给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。

    WindrunnerMax
  • springboot构建多模块依赖工程时,maven打包异常:程序包xxx不存在

    在原来的基础上改进: https://blog.csdn.net/qq_38069453/article/details/78332992

    MickyInvQ
  • O(1)最大值最小值的均值滤波算法

    之前做过最大值最小值滤波基本上复杂度是非常高的,因为涉及到遍历w*h的滑动窗口中的所有值然后求出这个窗口所有值的最大和最小值。尽管可以使用sse优化,但速度仍然...

    BBuf

扫码关注云+社区

领取腾讯云代金券