【数学】Leetcode 50. Pow(x, n)【中等】

Pow(x, n)

实现 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

解题思路

快速幂算法的基本思想是利用幂的二分性质,将幂次分解成较小的幂次,减少乘法次数。

  • 如果n 是偶数,则 xn=(x(n/2))^2 ^次方
  • 如果 n 是奇数,则 x^n =x × x^(n-1)
  • 通过递归或迭代的方法,可以快速地计算x 的n 次幂。

Java实现

public class Power {public double myPow(double x, int n) {if (n == 0) {return 1.0;}long N = n;  // 使用 long 类型避免 n 取最小值时溢出//如果 n 为负数,将 x 转换为 1/x,并将n 转换为正数。if (N < 0) {x = 1 / x;N = -N;}double result = 1.0;while (N > 0) {// 当 n 不为 0 时//如果  n 是奇数,将当前的 x 乘到结果上。if (N % 2 == 1) {//奇数 x^n =x × x^(n-1) ->(n-1)变成偶数//走下面的偶数逻辑(变成(n-1)/2,不变直接n/2也可以,结果是等价的)result *= x;}//偶数 x^n=(x^(n/2))^2 -->(x^2)^(n/2)//将 x 平方,n 减半。x *= x;N /= 2;}return result;}// 测试用例public static void main(String[] args) {Power solution = new Power();System.out.println(solution.myPow(2.0, 10));  // 期望输出: 1024.0System.out.println(solution.myPow(2.1, 3));   // 期望输出: 9.261System.out.println(solution.myPow(2.0, -2));  // 期望输出: 0.25}
}

时间空间复杂度

  • 时间复杂度:O(log n),因为每次操作将 n 减半。
  • 空间复杂度:O(1),只使用了常数级别的额外空间。

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

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

相关文章

wireshark抓包方法及常用过滤命令

wireshark是一个抓包小能手&#xff0c;排查网络问题的时候常常离不开&#xff0c;网上的使用教程也有很多&#xff0c;但多数是抓的有线数据包&#xff0c;本文主要介绍使用wireshark抓空口包的方法和常用命令。 -----再牛逼的梦想&#xff0c;也抵不住傻逼般的坚持&#xff…

OpenAI: 禁止在不支持的地区使用其 API

OpenAI 给开发者发邮件表示&#xff0c;禁止其 API 用于不被允许的地区&#xff0c;否则 7 月 9 日将面临封杀。 本次封杀似乎不区分 IP &#xff0c;而是直接按照地理位置。

电商数据自动化批量采集:商品数据|订单数据|店铺数据|图片搜索|关键字搜索

电商竞争白热化的今天&#xff0c;一个电商卖家往往会在多个平台铺设店铺来获取更多的客户。有没有什么高效的电商数据采集方式呢&#xff1f; 针对主流电商平台数据采集、ERP、OA等业务系统数据采集、行业数据采集&#xff0c;可以用以下5种电商数据采集方式&#xff1a; API…

【Linux】Ubuntu 部署 Zabbix 7.0

实验环境&#xff1a;Ubuntu-22.04 官方下载地址&#xff1a; 下载Zabbix 7.0 LTS for Ubuntu 22.04 (Jammy), MySQL, Apache 1、下载 Zabbix 官方安装包以及环境配置 下载 zabbix 安装包 wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabb…

Perl如何进行错误处理和创建子程序详解

在Perl中创建子程序&#xff08;类似于其他编程语言中定义函数&#xff09;的基本语法如下&#xff1a; 使用sub关键字&#xff1a;这是定义子程序的关键字。 子程序名称&#xff1a;可以是任何有效的Perl标识符。 参数列表&#xff1a;子程序可以有零个或多个参数&#xff0…

Spring-Boot整合Redis【随记】

基于spring boot整合. 1 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2 编写redis的配置文件 application.yml进行编写. 属性: url por…

Django网站开发技术的应用(理论篇)

概述 Django提供了许多功能。比如在安全方面上Django提供了csrf防护机制以防止跨域脚本攻击、使用身份验证机制以防止未授权的登录等等。在数据库方面上Django提供了orm&#xff08;面向对象的数据库访问技术&#xff09;方便了对数据库的操作。此外Django还提供自定义模板、缓…

掌握Three.js:学习路线,成为3D可视化开发的高手!

学习Three.js可以按照以下路线进行&#xff1a; 基础知识&#xff1a; 首先要了解基本的Web开发知识&#xff0c;包括HTML、CSS和JavaScript。如果对这些知识已经比较熟悉&#xff0c;可以直接进入下一步。 Three.js文档&#xff1a; 阅读Three.js官方文档是学习的第一步。官…

(更新)2004-2022年 全国各省环境污染治理投资额数据

环境污染治理投资额是衡量一个国家或地区在环境保护和污染治理方面投入力度的重要经济指标。它体现了政府和企业在改善环境质量、推动绿色发展方面的共同努力&#xff0c;同时也是环境规制政策执行强度的一个反映。 数据简介 环境污染治理投资额涵盖了以下几个方面&#xff1…

APP软件系统的开发流程

APP软件系统的开发是一个复杂的过程&#xff0c;需要多方面的知识和技能。建议选择专业的开发团队进行开发&#xff0c;以确保APP的质量和成功。APP软件系统的开发流程通常包括以下几个阶段。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…

react获取use声明的变量的值

在React中&#xff0c;使用useState Hook 可以让你在函数组件中添加状态。useState返回一个状态变量&#xff08;当前的值&#xff09;和一个用于更新这个状态变量的函数。要获取useState中的值&#xff0c;你只需要直接使用这个状态变量即可。 下面是一个简单的例子&#xff…

ONLYOFFICE 桌面编辑器 8.1全新发布,更强大的编辑工具

ONLYOFFICE 8.1 一、什么是ONLYOFFICE&#xff1f;二、怎么安装 ONLYOFFICE 8.1三、主要功能介绍四、总结 一、什么是ONLYOFFICE&#xff1f; ONLYOFFICE 是一款功能强大的办公套件&#xff0c;旨在提供全面的文档、表格和演示文稿编辑解决方案。它集成了文字处理、电子表格和演…

基于Hexo+GITHUB搭建个人博客网站(PS:不用域名,不用服务器,重点是免费,小白也能轻松掌握)

✌ 作者名字&#xff1a;高峰君主 &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f4ac; 人生格言&#xff1a;没有我不会的语言&#xff0c;没有你过不去的坎儿。&#x1f4ac; &#x1f5…

TMGM外汇:新兴市场的崛起,未来的经济引擎吗?

随着全球经济版图的不断变化&#xff0c;新兴市场逐渐成为国际投资的热点。从亚地区的中国和印度&#xff0c;到拉丁美洲的巴西和墨西哥&#xff0c;再到非洲的尼日利亚和南非&#xff0c;新兴市场的经济活力和潜力引起了全世界的关注。这些市场不仅人口众多&#xff0c;而且在…

Go 语言高频面试题

Go 初级面试题及详细解答 1. 什么是 Go 语言&#xff1f;它的特点是什么&#xff1f; 解答&#xff1a; Go&#xff08;又称 Golang&#xff09;是一门开源编程语言&#xff0c;由Google开发&#xff0c;并于2009年首次公开发布。它具有内存安全、并发支持、垃圾回收等特性&a…

win11 修改用户名

step1: 打开设置 step2: 如下图&#xff0c;点击“重命名”修改即可&#xff1b; 看似简单的问题&#xff0c;但若直接搜索查找&#xff0c;很难找到简单的操作&#xff0c;苦笑。。。

超炫酷, 不用学前端也能自己做网页!这个Python库,3分钟内复刻GPT WEB应用

大家好&#xff0c;我是海鸽。 今天&#xff0c;我要和大家分享如何将请求 GPT 的案例&#xff0c;快速“复刻”成 GPT 网页版。这不仅简单&#xff0c;而且对于我们这些后端开发者来说&#xff0c;简直是福音&#xff01; 先睹为快 看看这个界面&#xff0c;是不是感觉很熟…

php,python AES/CBC/PKCS7Padding加密解密 base64/hex编码

1. python版本 import base64 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpadclass AESUtilCBC:def __init__(self, key, iv):self.key key.encode(utf-8)self.iv iv.encode(utf-8)self.pad_length AES.block_sizedef encrypt(self, data):try…

如何在PHP中实现继承?

如何在PHP中实现继承&#xff1f; 引言 在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;继承是一种强大的特性&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;继承另一个类&#xff08;称为基类或父类&#xff09;的属性和方法。PHP作为一种支持…

flutter是app跨平台最优解吗?

哈喽&#xff0c;我是老刘 最近在知乎上看到这样一个问题 我们先来解释一下问题中碰到的几个现象的可能原因&#xff0c;然后聊聊跨平台的最优解问题 问题解释 1、跟手、丝滑问题 这个问题其实很多人是有误解的&#xff0c;觉得原生的就丝滑跟手 其实不是这样的 我在做Flut…