leetcode_50.Pow(x,n)

server/2024/9/23 9:36:50/

50. 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

提示:

  • -100.0 < x < 100.0
  • -2^31 <= n <= 2^31-1
  • n 是一个整数
  • 要么 x 不为零,要么 n > 0 。
  • -10^4 <= x^n <= 10^4

基本思路

myPow 函数的目的是计算 xn 次幂,即 x^n。为了优化计算,代码使用了递归和分治法将指数的计算分成较小的子问题来解决,从而减少计算次数。

代码分析

  1. 基准情况

    • 如果 n 等于 0,任何数的 0 次幂都是 1。
    • 如果 n 等于 1,x 的 1 次幂就是 x 本身。
    • 如果 n 等于 -1,x 的 -1 次幂就是 1 / x
  2. 递归调用

    • n 分成两部分进行递归计算,计算 xn/2 次幂。
  3. 合并结果

    • 如果 n 是偶数,x^n 就等于 x^(n/2) * x^(n/2)
    • 如果 n 是奇数,则根据 n 的正负情况处理:
      • 对于负指数 n < 0x^n 等于 x^(n/2) * x^(n/2) * (1/x)
      • 对于正指数 n > 0x^n 等于 x^(n/2) * x^(n/2) * x

递归的效率

这种方法的效率比直接循环计算所有次幂要高,因为它将问题规模减小了一半。时间复杂度为 O(log n),因为每次递归调用都将 n 减小了一半。这比简单的 O(n) 循环要高效得多。

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


http://www.ppmy.cn/server/90604.html

相关文章

ArcGIS Pro SDK (九)几何 14 检索与导入、导出 - 副本

ArcGIS Pro SDK &#xff08;九&#xff09;几何 14 检索与导入、导出 文章目录 ArcGIS Pro SDK &#xff08;九&#xff09;几何 14 检索与导入、导出1 从地理数据库检索几何2 将几何图形导入和导出为已知文本3 将几何图形导入和导出到众所周知的二进制4 将几何导入和导出到 E…

一篇文章教你如何读懂 JMeter聚合报告参数!

在进行性能测试时&#xff0c;JMeter是一款备受推崇的开源工具。而其中的聚合报告&#xff08;Aggregate Report&#xff09;是我们分析测试结果、了解系统性能的重要依据。今天&#xff0c;我们就来深入探讨如何读懂JMeter聚合报告中的各项参数。 面对复杂的聚合报告&#xf…

802.11 wireshark 抓包

80211 wireshark 抓包 前言配置 monitor软件配置wireshark 操作 前言 本人习惯使用 Omnipeek 抓包分析&#xff0c;所以 wireshark 的实验只讲到抓包完成。 Windows 环境采用 wireshark 抓包是比较麻烦的&#xff0c;因为支持在 Windows 环境中支持抓包的网卡并不多&#xff0…

NLP基础知识2【各种大模型的注意力】

注意力 传统Attention存在的问题优化方向变体有哪些现在的主要变体集中在KVMulti-Query AttentionGrouped-query AttentionFlashAttention 传统Attention存在的问题 上下文约束速度慢&#xff0c;显存占用大&#xff08;因为注意力考虑整体信息&#xff0c;所以每一个位置都要…

图片懒加载的使用

1.安装 npm i vue-lazyload 或者 yarn add vue-lazyload 2.导入 //引入 import VueLazyload from vue-lazyload //图片 import baby from /assets/images/baby.jpg 3.注册 // 注册 Vue.use(VueLazyload,{ //懒加载默认图片 loading: baby, }) 4.使用&#xff08;将src替换称v-l…

PHP运算符

PHP 运算符是用于执行各种操作&#xff08;如算术运算、比较、逻辑运算、字符串连接等&#xff09;的符号。在 PHP 中&#xff0c;运算符的命名主要是基于它们的功能和用法&#xff0c;而不是像变量或函数那样可以自定义名称。以下是一个关于 PHP 运算符的详细教程&#xff0c;…

简单谈谈 手机版买卖现货白银的好和不好

随着科技的发展&#xff0c;现在买卖现货白银可以在移动设备上进行&#xff0c;那意味着投资者通过手机、平板电脑等都可以进行交易&#xff0c;这进一步解放了投资者交易的场所限制&#xff0c;让投资者有了更大的自由度。有条件的朋友&#xff0c;除了通过个人电脑做现货白银…

Datawhale AI 夏令营——AI+逻辑推理——Task1

# Datawhale AI 夏令营 夏令营手册&#xff1a;从零入门 AI 逻辑推理 比赛&#xff1a;第二届世界科学智能大赛逻辑推理赛道&#xff1a;复杂推理能力评估 代码运行平台&#xff1a;魔搭社区 比赛任务 本次比赛提供基于自然语言的逻辑推理问题&#xff0c;涉及多样的场景&…