leetcode 50. Pow(x, n)(x的n次方)

news2025/1/6 19:37:21

在这里插入图片描述
求x的n次方。

思路:

第一个想到的思路是x和它自己乘n次,
但是这样做会面临一些问题:
如果是简单的n很小的情况还好,但是可以看到n的取值横跨整个整数范围,
如果n非常大,一次一次乘x效率低是其一。

一般来说,如果n为负数,会先取abs(n), 乘x直至n=0后,再用1.0/res.
但是你会发现,如果n = -231, 那么abs(n)会溢出(正数范围到-231-1),得到错误的结果。

所以要换个思路。

在网上看到这种方法不错,时间复杂度为O(nlogn),
把xn等价于x2 * xn/2, 这样不断地把n分解为n/2.
相当于递归调用myPow函数,myPow(x, n) = x2 * myPow(x, n/2).

但是你会问如果n不能被2整除怎么办,
那就把余数单独拿出来再乘一遍:xn = x2 * xn/2 * xn%2

如果n为负数呢,
在递归到n=1或者-1的时候再做处理,因为n为负数时也只需要最后做一次1.0/res.
n=1时,就是x本身,n=-1时,就是1.0/x

public double myPow(double x, int n) {
    if(n == 0 || x == 1) return 1.0;
    int nMod2 = n % 2;
    double a = 1.0;

   if(nMod2 == 1) {
        a = x;
    } else if(nMod2 == -1){
        a = 1.0/x;
    }
    return myPow(x*x, n/2)*a;
}

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

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

相关文章

十、数据结构——链式队列

数据结构中的链式队列 目录 一、链式队列的定义 二、链式队列的实现 三、链式队列的基本操作 ①初始化 ②判空 ③入队 ④出队 ⑤获取长度 ⑥打印 四、循环队列的应用 五、总结 六、全部代码 七、结果 在数据结构中,队列(Queue)是一种常见…

【MySQL】存储引擎(六)

🚗MySQL学习第六站~ 🚩本文已收录至专栏:MySQL通关路 ❤️文末附全文思维导图,感谢各位点赞收藏支持~ 一.引入 大家可能没有听说过存储引擎,但是一定听过引擎这个词,引擎就是发动机,是一个机器…

PCB封装设计指导(十五)验证封装的正确性

PCB封装设计指导(十五)验证封装的正确性 封装建立好之后,我们需要验证封装是否能够正常的放入PCB文件中,最好最直接的办法就是直接放入PCB中来验证。 具体操作如下 任意新建一个空白的PCB文件点击File 选择NEW

搭建关键字驱动自动化测试框架

前言 上篇文章我们已经了解到了数据驱动自动化测试框架是如何构建和驱动测试的!那么这篇文章我们将了解关键字驱动测试又是如何驱动自动化测试完成整个测试过程的。关键字驱动框架是一种功能自动化测试框架,它也被称为表格驱动测试或者基于动作字的测试…

一站式解决方案:Qt 跨平台开发灵活可靠

Qt 是一种跨平台开发工具,为开发者提供了一站式解决方案。无论您的项目目标是 Windows、Linux、macOS、嵌入式系统还是移动平台,Qt 都能胜任。这种跨平台的特性不仅节省开支,还推动了战略的快速落地。 适用范围广泛:Qt 可在多种操…

从新手到专业人士:探索 C++ STL 以获得终极性能

探索 C STL 以获得终极性能 博主简介一、引言二、C STL 简介2.1、STL 是什么?2.2、STL 中的常用组件2.3、STL 的优点 三、入门指南:了解基本概念和用法3.1、容器:vector、list、deque、set、map 等3.2、算法:查找、排序、遍历等3.…

C# IO FileStream流(一)使用整理

一、C# IO 文件流,常用操作整理 来自其他开发者的整理: 文件操作常用相关类 1)Directory //操作目录(文件夹),静态类。2)Path//静态类,对文件或目录的路径进行操作(很方便)【字符…

解决Element-Plus中Swtich @change自动被触发的问题

如图所示 这个switchChange事件在初始化的时候会被自动触发 烦得很 解决方法 如图所示 第471行 通过判断是否还有其它某元素再往下执行 如果你有其它方法 请你在评论区教我下哈 3q

智慧园区楼宇合集 | 图扑数字孪生管控系统

智慧园区是指将物联网、大数据、人工智能等技术应用于传统建筑和基础设施,以实现对园区的全面监控、管理和服务的一种建筑形态。通过将园区内设备、设施和系统联网,实现数据的传输、共享和响应,提高园区的管理效率和运营效益,为居…

【MySQL】索引 (八)

🚗MySQL学习第八站~ 🚩本文已收录至专栏:MySQL通关路 ❤️文末附全文思维导图,感谢各位点赞收藏支持~ 一.引入 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。数据库除了存储数据之外,…

Vue异步更新、$nextTick

需求:编辑标题, 编辑框自动聚焦 1. 点击编辑,显示编辑框 2. 让编辑框, 立刻获取焦点 this. isShowEdit true // 显示输入框 this . $refs . inp . focus () // 获取焦点 问题:"显示之后",立刻获…

Bash编程

目录: bash编程语法bash脚本编写 1.bash编程语法 Bash 编程基础 变量引号数组控制语句函数 Bash 变量 语法: Variable_namevalue Bash 变量定义的规则 变量名区分大小写,a和A为两个不同的变量。变量名可以使用大小写字母混编的形式进行…

淘票猫影城系统-Spring Boot版

文章目录 一、引言TIPSticketcatticketcat-wechat-miniprogramticketcat-web-userticketcat-web-manager 三、项目截图wechat-miniprogramweb-userweb-manager 四、License 前往闪闪の小窝以获得更好的阅读和评论体验 一、引言 项目地址: 项目名项目内容项目地址开…

【Java】String类常用方法总结

文章目录 1丶boolean equals(Object anObject) 方法2丶int compareTo(String s) 方法3、 int compareToIgnoreCase(String str) 方法4丶字符串查找常用方法.5.丶字符串转化常用方法.大小写转换字符串转数组 6丶字符串替换7丶字符串拆分8丶字符串截取9丶去掉左右空格&#xff08…

备战秋招 | 笔试强训14

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、下列有关this指针使用方法的叙述正确的是() A. 保证基类保护成员在子类中可以被访问 B. 保证基类私有成员在子类中可以被访问 C. 保证基类共有成员在子类中可以被访问 D.…

机器学习 day31(baseline)

语音识别的Jtrain、Jcv和人工误差 对于逻辑回归问题,Jtrain和Jcv可以用分类错误的比例,这一方式来代替单单只看Jtrain,不好区分是否高偏差。可以再计算人类识别误差,即人工误差,作为基准线Jtrain与baseline对比只高了…

keepalived + lvs (服务端socket 客户端socket) udp协议

1、Keepalived 1. 1 keepalived 简介 1.1.1 什么是keepalived Keepalived一个基于VRRP 协议来实现的 LVS 服务高可用方案,可以利用其来解决单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER)&#xff…

MFC第二十二天 三种绘图句柄与三大坐标系(三大CDC派生类)简介以及应用、Invalidate刷新函数的功能和用法简介

文章目录 三种绘图句柄与三大坐标系(三大CDC派生类)简介以及应用三种HDC句柄三大CDC派生类什么是放泄露架构使用HDC句柄进行常见图形绘制演示 HPEN和HBRUSH句柄HPEN的创建 Invalidate刷新函数的功能和用法简介应用Win32下MFC下 附录 三种绘图句柄与三大坐…

【算法题解】51. 二叉树的最近公共祖先

这是一道 中等难度 的题 https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/ 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为…

Transformer+医学图像最新进展【2023】

Transformer主要用于自然语言处理领域。近年来,它在计算机视觉(CV)领域得到了广泛的应用。医学图像分析(MIA,Medical image analysis)作为机器视觉(CV,Computer Vision)的一个重要分支,也极大地受益于这一最先进的技术。 机构:新加坡国立大学机械工程系、中山大学智能系…