【LeetCode】剑指 Offer 16. 数值的整数次方 p110 -- Java Version

news2024/9/22 19:44:04

题目链接:https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/

1. 题目介绍(16. 数值的整数次方)

实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。

【测试用例】:
示例 1:

输入:x = 2.00000, n = 10
输出:1024.00000

示例 2:

输入:x = 2.10000, n = 3
输出:9.26100

示例 3:

输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25

【条件约束】:

提示:

  • -100.0 < x < 100.0
  • -231 <= n <= 231-1
  • -104 <= xn <= 104

【相同题目】:

注意:本题与主站 50. Pow(x, n) 题目相同.

2. 题解

2.1 对负指数次幂结果求倒数 – O(n)

时间复杂度O(n),空间复杂度O(1)

class Solution {
    // 定义全局变量,用来提示函数调用者,出现了什么错误
    boolean invaildInput = false;
    public double myPow(double x, int n) {
        invaildInput= false;
        // 1. 对底数为0,且指数是负数的情况,进行特殊处理
        // 因为0不能作为除数来处理
        if (x == 0.0 && n < 0) {
            invaildInput = true;
            return 0.0;
        }
        // 2. 当指数为0时,我们取其绝对值
        int abs = n;
        if (n < 0) abs = -abs;
        // 3. 调用PowerWithUnsigned方法,得到幂次结果
        double result = PowerWithUnsigned(x,abs);
        // 4. 如果指数为0,那么就取其倒数
        if (n < 0) result = 1.0/result;
        // 5. 最后返回结果
        return result;
    }
    // 求正数的幂次结果
    public double PowerWithUnsigned(double x, int n){
        double result = 1.0;
        for (int i = 0; i < n; i++){
            result *= x;
        }
        return result;
    }
}

在这里插入图片描述

2.2 快速幂 – O(logn)

时间复杂度O(logn),空间复杂度O(1)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution {
    public double myPow(double x, int n) {
        // 1. 如果输入值为0,则直接返回0
        if(x == 0) return 0;
        // 2. 定义一个变量用来存储指数
        long b = n;
        // 3. 初始化结果值变量
        double res = 1.0;
        // 4. 如果指数小于0,取输入值的倒数,并取指数的绝对值
        if(b < 0) {
            x = 1 / x;
            b = -b;
        }
        // 5. 指数大于0
        while(b > 0) {
            // 每当n 为奇数时,将多出的一项x 乘入 res
            if((b & 1) == 1) res *= x;
            x *= x;
            // n/2
            b >>= 1;
        }
        return res;
    }
}

在这里插入图片描述

2.3 递归 – O(logn)

时间复杂度O(logn),空间复杂度O(n)

思路同2.2基本相同,只不过这里直接采用公式进行了递归.

class Solution {
    public double myPow(double x, int n) {
        if(n == 0)
            return 1;
        if(n<0){
            return 1/x * myPow(1/x, -(n + 1));
        }
        return (n%2 == 0) ? myPow(x*x, n/2) : x*myPow(x*x, n/2);
    }
}

在这里插入图片描述

3. 参考资料

[1] 面试题16. 数值的整数次方(快速幂,清晰图解)-- 快速幂算法图片来源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/373165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文献计量分析方法:Citespace安装教程

Citespace是一款由陈超美教授开发的可用于海量文献可视化分析的软件&#xff0c;可对Web of Science&#xff0c;Scopus&#xff0c;Pubmed&#xff0c;CNKI等数据库的海量文献进行主题、关键词&#xff0c;作者单位、合作网络&#xff0c;期刊、发表时间&#xff0c;文献被引等…

数据结构入门5-2(数和二叉树)

目录 注&#xff1a; 树的存储结构 1. 双亲表示法 2. 孩子表示法 3. 重要&#xff1a;孩子兄弟法&#xff08;二叉树表示法&#xff09; 森林与二叉树的转换 树和森林的遍历 1. 树的遍历 2. 森林的遍历 哈夫曼树及其应用 基本概念 哈夫曼树的构造算法 1. 构造过程 …

响应性基础API

一.什么是proxy和懒代理&#xff1f;什么是proxy?proxy对象是用于定义基本操作的自定义行为(如&#xff1a;属性查找&#xff0c;赋值&#xff0c;枚举&#xff0c;函数调用等等)。什么是懒代理&#xff1f;懒代理&#xff1a;在初始化的时候不会进行全部代理&#xff0c;而是…

数据仓库Hive

HIve介绍 Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具&#xff0c;可以用来进行数据提取转化加载&#xff0c;可以简称为ETL。 Hive 定义了简单的类SQL查询语言&#xff0c;称为HQL&#xff0c;它允许熟悉SQL的用户直接查询Hadoop中的数据&#xf…

三万字全面概述关于5G-V2X技术和应用

5G技术有望实现更快的网联链接、更低的延迟、更高的可靠性、更大的容量和更广的覆盖范围。希望依靠这些技术来实现车辆到一切&#xff08;V2X&#xff09;的通信&#xff0c;除了道路安全外&#xff0c;还能提高车辆的安全性和自动驾驶性能&#xff0c;节约能源和成本。车辆通信…

算法设计与分析期末考试复习(四)

贪心算法&#xff08;Greedy Algorithm&#xff09; 找零钱问题 假设有4种硬币&#xff0c;面值分别为&#xff1a;二角五分、一角、五分和一分&#xff0c;现在要找给顾客六角三分钱&#xff0c;如何找使得给出的硬币个数最少&#xff1f; 首先选出1个面值不超过六角三分的最…

improve-2

BFC 块级格式化上下文&#xff0c;是一个独立的渲染区域&#xff0c;让处于 BFC 内部的元素与外部的元素相互隔离&#xff0c;使内外元素的定位不会相互影响。 IE下为 Layout&#xff0c;可通过 zoom:1 触发 触发条件: 根元素position: absolute/fixeddisplay: inline-block /…

[计算机网络(第八版)]第三章 数据链路层(学习笔记)

物理层解决了相邻节点透明传输比特的问题 3.1 数据链路层的几个共同问题 3.1.1 数据链路和帧 链路&#xff1a; 从一个节点到相邻节点的一段物理线路&#xff0c;中间没有任何其他的交换节点 数据链路&#xff1a; 节点间的逻辑通道是把实现控制数据传输的协议的硬件和软件加…

Unity Avatar Foot IK - Avatar Foot Placement Resolution

文章目录简介实现Avatar FBX Import SettingsAnimator SettingsOn Animator IKCalculate IK Position & RotationBody PositionApply IK Position & Rotation简介 通过Unity内部的Mecanim动画系统实现的FootIK功能&#xff0c;效果如图所示&#xff0c;左右分别为开启…

计算机网络协议—应用层

应用层网络协议 应用层的常见协议 超文本传输&#xff1a;HTTP、HTTPS文本传输&#xff1a;FTP电子邮件&#xff1a;SMTP、POP3、IMAP动态主机配置&#xff1a;DHCP域名系统&#xff1a;DNS 域名&#xff08;Domain Name&#xff09; 由于IP地址不方便记忆&#xff0c;并且不…

【CAN】手把手教你学习CAN总线(一)

CAN总线一、CAN总线概念二、CAN的差分信号三、CAN总线的通信协议1、 帧起始2、仲裁段3、控制段4、数据段5、CRC段6、ACK段7、帧结束四、CAN的位时序1、同步段&#xff08;SS&#xff09;2、传播时间段&#xff08;PTS&#xff09;3、相位缓冲段&#xff08;PBS&#xff09;4、再…

gin 框架初始教程文档

一 、gin 入门1. 安装gin &#xff1a;下载并安装 gin包&#xff1a;$ go get -u github.com/gin-gonic/gin2. 将 gin 引入到代码中&#xff1a;import "github.com/gin-gonic/gin"3.初始化项目go mod init gin4.完整代码package mainimport "github.com/gin-go…

java 一文讲透面向对象 (20万字博文)

目录 一、前言 二、面向对象程序设计介绍 1.oop三大特性 : 2.面向对象和面向过程的区别 : 3.面向对象思想特点 : 4.面向对象的程序开发 : 三、Java——类与对象 1.java中如何描述一个事物? 2.什么是类? 3.类的五大成员&#xff1a; 4.封装的前提——抽象 : 5.什么是对…

使用python暴力破解zip压缩包的密码

如果你有压缩包的密码忘记了&#xff0c;并且压缩包的加密算法采用的是ZipCrypto&#xff0c;并且压缩参数如下图所示&#xff1a; 那么你就可以使用本文中的方法进行破解。 压缩包的加密&#xff0c;是根据输入的密码进行运算加密&#xff0c;输入不同的密码&#xff0c;加密…

OpenCV-Python系列(二)—— 图像处理(灰度图、二值化、边缘检测、高斯模糊、轮廓检测)

一、【灰度图、二值化】 import cv2 img cv2.imread("lz2.png") gray_img cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图 # 二值化&#xff0c;(127,255)为阈值 retval,bit_img cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY) cv2.imshow(photo1,im…

java:自定义变量加载到系统变量后替换shell模版并执行shell

这里的需求前提是&#xff0c;在项目中进行某些操作前&#xff0c;需要在命令后对shell配置文件的进行修改&#xff08;如ip、port&#xff09;&#xff0c;这个对于用户是不友好的&#xff0c;需要改为用户页面输入ip、port&#xff0c;后台自动去操作修改配置&#xff1b;那么…

SAP 能不能撤销已冲销的凭证?能的话怎么操作?

本篇涉及SAP的SAP 财务凭证的冲销操作的。有需要可以查看&#xff1a;前面的文章有一篇是专门介绍如何介绍如何冲销SAP财务凭证的文章。SAP财务凭证常见的冲销步骤详细操作手册&#xff08;FB08、AB08、VF11、FBRA等&#xff09; 开始进入正题。假如有这么一种场景&#xff1a;…

【Acwing 周赛复盘】第92场周赛复盘(2023.2.25)

【Acwing 周赛复盘】第92场周赛复盘&#xff08;2023.2.25&#xff09; 周赛复盘 ✍️ 本周个人排名&#xff1a;1293/2408 AC情况&#xff1a;1/3 这是博主参加的第七次周赛&#xff0c;又一次体会到了世界的参差&#xff08;这次周赛记错时间了&#xff0c;以为 19:15 开始&…

使用Jmeter进行性能测试的这套步骤,入职京东后,涨薪2次,升职一次

项目背景&#xff1a; 我们的平台为全国某行业监控平台&#xff0c;经过3轮功能测试、接口测试后&#xff0c;98%的问题已经关闭&#xff0c;决定对省平台向全国平台上传数据的接口进行性能测试。 01 测试步骤 1、编写性能测试方案 由于我是刚进入此项目组不久&#xff0c;…

怎么设置启用远程桌面?如何让外网电脑远程本地内网?

如何远程控制电脑&#xff1f;最简单实用的方案是开启电脑系统自带的远程桌面功能&#xff0c;如果涉及跨网、内外网互通&#xff0c;可以同时用快解析内网映射外网。下面是方案的具体实施步骤&#xff0c;供大家参考。 怎么打开设置启用远程桌面&#xff1f; 1.在目标需要远…