剑指offer—16.数值的整数次方——分析及代码(Java)

2023-10-30

剑指offer——16.数值的整数次方——分析及代码[Java]

一、题目

给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent。求 base 的 exponent 次方。
保证 base 和 exponent 不同时为 0。

二、分析及代码

1. 二分求解

(1)思路

本题首先需综合考虑各类情况:
1)base == 0,返回 0;
2)exponent == 0,返回 1;
3)exponent < 0,先求解 -exponent 次方,再取倒数;
4)exponent > 0,直接求解。

在直接求解数的 exponent 次方的过程中,可通过二分方法减小计算循环次数:
1)若 exponent 为偶数,结果为 exponent>>1 次方 的平方;
2)若 exponent 为奇数,结果为 exponent>>1 次方 的平方再乘 base。
可通过位运算提高计算效率。

(2)代码

public class Solution {
    public double Power(double base, int exponent) {
        if (base == 0)
            return 0;
        if (exponent >= 0)
            return PowerAbsExponent(base, exponent);
        return (1.0 / PowerAbsExponent(base, -exponent));
    }
    
    public double PowerAbsExponent(double base, int exponent) {
        if (exponent == 0)
            return 1;
        double res = PowerAbsExponent(base, exponent >> 1);
        res *= res;
        if ((exponent & 1) == 1)//判断奇偶
            res *= base;
        return res;
    }
}

(3)结果

运行时间:48ms,占用内存:10356k。

三、其他

暂无。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剑指offer—16.数值的整数次方——分析及代码(Java) 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo

随机推荐

  • 数字信号谱估计方法对比仿真——估计自相关,周期图法,协方差法,burg算法,修正协方差法

    目录 一 理论基础 1 1自相关谱估计 1 2周期图法谱估计 1 3协方差法谱估计 1 4burg算法谱估计 1 5修正协方差谱估计 二 核心程序 三 仿真结论 一 理论基础 自相关谱估计 周期图法谱估计 协方差法谱估计 Burg算法谱估计
  • 如何在两天之内写出一篇学术论文:Pete Carr 教授的高效写作秘籍

    文章目录 一 前言 二 主要内容 三 总结 CSDN 叶庭云 https yetingyun blog csdn net 一 前言 随着科研的不断发展 研究论文已成为每位学者不可或缺的 利器 然而 撰写一篇既有深度又有广度的研究论文却是一项
  • leetcode99-恢复二叉搜索树(两个空间复杂度的解法)

    恢复二叉搜索树 题目 给你二叉搜索树的根节点 root 该树中的 恰好 两个节点的值被错误地交换 请在不改变其结构的情况下 恢复这棵树 示例 思路 嘶 递归递了加一起得两个点 笔试的题是 交换了若干个相邻结点的 恢复成一颗二叉搜索树 估计就
  • 图像处理大作业(用霍夫变换检测硬币及统计硬币个数,并设计GUI界面)

    实现所给硬币图像中的硬币检测及计数 要求完成功能 自行查找 阅读有关的采用Hough变换来检测图像中圆的资料 设计实现所给图像中圆形的检测 要求检测出图像中硬币个数以及各个硬币的直径 本题难度系数 GUI界面设计参考 MATLAB学习笔记
  • obsidian图片链接转换成markdown语法,不关闭wiki链接

    问题 近期尝试使用了obsidian作为我的笔记软件 但是发现obsidian的图片链接会自动使用wiki链接的方式保存 比如这样的格式 图片路径 但是这样的路径 一般的markdown编辑器是识别不了的 这一点我比较不喜欢 因为我想在使用
  • web下载七牛云上面的图片资源

    本文将怎么通过浏览器打包下载七牛云服务器上面的图片资源 如果不用压缩打包处理 可以直接获取流后用对应的out输出就行 不做具体解析 1 先讲怎么打包下载吧 ZipOutputStream我用的是这个工具类 创建 ZipOutputStrea
  • RL-RTX小读之os_sem_wait

    rtl h中定义了 define os sem wait sem tmo os sem wait U32 rt sem wait sem tmo rt sem wait的实现如下 OS RESULT rt sem wait OS ID se
  • for循环遍历列表的注意事项

    一图流
  • 环形链表

    LeetCode 环型链表 给定一个链表 返回链表开始入环的第一个节点 如果链表无环 则返回 null 为了表示给定链表中的环 我们使用整数 pos 来表示链表尾连接到链表中的位置 索引从 0 开始 如果 pos 是 1 则在该链表中没有环
  • 用 JavaScript,五分钟将 Siri 接入 ChatGPT(搬运)

    Siri ChatGPT 使用教程 将 Siri 接入 ChatGPT 直接语音唤醒 并且支持连续对话 第一步 拷贝项目 通过 AirCode 源码链接中右上角的 Get a copy 按钮快速生成一个自己的 AirCode Node js
  • 大数据技术原理与应用---笔记一:大数据概论

    大数据概论 1 大数据概念 1 1 4v说法 1 2 大数据的影响 对科学研究的影响 对思维方式影响 2 大数据相关技术 2 1大数据基本处理流程 3 大数据计算模式 大数据产业 参考书籍 1 大数据概念 1 1 4v说法 1 数据量大 v
  • 【华为上机真题】事件推送

    作者 Linux猿 简介 CSDN博客专家 华为云享专家 Linux C C 云计算 物联网 面试 刷题 算法尽管咨询我 关注我 有问题私聊 关注专栏 数据结构和算法成神路 精讲 优质好文持续更新中 欢迎小伙伴们点赞 收藏 留言 目录 一
  • 填速度环的大坑以及转向环的疑问还有对PID的魔性认识

    原文 https blog csdn net weixin 30836759 article details 94931014 前几天填补了速度环的大坑 之前速度环是每次获取编码器的返回值来对输出的PWM波进行赋值 发现车总是有气无力 更换
  • Spring Security+Spring Boot 无法访问静态资源 401-跨域问题解决

    401告诉我没有权限 一开始我还以为时静态资源没有开放 package cn hcnet2006 blog hcnetwebsite config import org springframework context annotation
  • java dispose - public void dispose()

    dispose public void dispose 释放由此 Window 其子组件及其拥有的所有子组件所使用的所有本机屏幕资源 即这些 Component 的资源将被破坏 它们使用的所有内存都将返回到操作系统 并将它们标记为不可显示
  • vue项目中如何定义 多个全局自定义指令

    在项目中如果自定义指令太多 不方便在main js中写 那么如何能够全部写在一个文件然后在main js中引入 首先创建一个js文件 用于专门书写指令 directives index js export const imagerror i
  • signed和unsigned区别

    signed和unsigned用于修饰整数类型 包括char 从ANSI C89标准开始支持 signed表示有符号 unsigned表示无符号 有符号数的最大取值要比无符号的小约一半 因为有符号数的最高一位被用来表示符号 默认的int s
  • 剑指offer 专项突破版 119、最长连续序列

    题目链接 思路 同样的可以转化为并查集来做 可以把相邻的数字放到一个子集中 每当搜索到一个数字时就判断和他相邻的数字是否在集合中 如果在就合并 为了方便记录每个集合的大小 可以用一个count集合记录每个子集的大小 在合并集合的时候也要更新
  • vue开发环境准备-  配置npm私服地址

    1 通过config命令 npm config set registry https ip repository npm group 2 命令行方式 npm registry https ip repository npm group in
  • 剑指offer—16.数值的整数次方——分析及代码(Java)

    剑指offer 16 数值的整数次方 分析及代码 Java 一 题目 二 分析及代码 1 二分求解 1 思路 2 代码 3 结果 三 其他 一 题目 给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent