当前位置: 首页 > news >正文

LeetCode--50.Pow(x,n)

前言:断更了,又断更了,我的毅力在我的欲望面前一无是处,太难以启齿了,我们就直接开始题解吧

解题思路:

        1.获取信息:

                实现pow(x,n),即计算x的整数n次幂函数

        2.分析题目:

                pow函数,我们应该都了解过,现在就是来实现它的功能

                我们知道幂,就是多次相乘或者相加来进行实现的

                如果使用相加的话,极其容易超出时间限制

                那么可以使用相乘来实现该函数的功能

                就相乘这个思路,我写出了两种方法,循序渐进,方便你理解

        3.示例查验:略

        4.尝试编写代码:

                (1)反骨法:

                        我们知道,pow函数是存在的吧,那我们直接调用不就行了

                        这种方法特别无赖,也根本称不上是一种方法,十分不推荐,写出来也只是让各位娱乐一下

class Solution {
public:double myPow(double x, int n) {return pow(x,n);}
};

                (2)乘法(暴力法)

                        思路:我们对于x,使n个x相乘即可

                        时间复杂度非常高,不推荐

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

                (3)快速幂(递归形式)

                        思路:其实就是乘法的优化

                        例如:2的10次方,是由两个2的5次方相乘的来的吧,2的5次方是由两个2的2次方和一个2相乘的来的,2的2次方是由2个2相乘的来的

                        我们对于最开始的2的10次方,我们知道10为偶数,那么结果就是2个2的5次方相乘

                        但是对于2的5次方,5为奇数,所有2的5次方是由2个2的2次方再乘上一个2的来的

                        所以,每次对于一个幂的次方,我们可以分为偶数和奇数的情况

                        为偶数,假设为n次方,则是由(x^[n/2])*(x^[n/2]),[ ]表示向下取整,^这个表示的是次方,而不是c++中的运算哦

                        为奇数,则(x^[n/2])*(x^[n/2])*x

                        实现形式可以使用递归或者迭代,这里我使用了递归,因为我之前讲递归讲得比较多,可以方便你理解

                        还用到了分治的思想,你每分一次,都可以将分得的数作为一个主角,每次递归都在处理一个主角,最后小主角们就合并成了大主角了

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

以上就是本次题解,今天把断更的续上,断更状态就刷新了,明天就算不更新,那也相当于才断更了一天哦

http://www.dtcms.com/a/301911.html

相关文章:

  • MySQL的常用数据类型详解
  • python毕业设计案例:基于python django的抖音数据分析与可视化系统,可视化有echarts,算法包括lstm+朴素贝叶斯算法
  • Java项目:基于SSM框架实现的社区团购管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+远程部署】
  • PyTorch入门动态图与神经网络构建
  • PostgreSQL 14.4 ARM64 架构源码编译安装指南
  • 【运维】HuggingFace缓存目录结构详解
  • MySQL SQL性能优化与慢查询分析实战指南:新手DBA成长之路
  • 【第四章:大模型(LLM)】01.神经网络中的 NLP-(2)Seq2Seq 原理及代码解析
  • 数据结构 | 队列:从概念到实战
  • nvim cspell
  • Nginx HTTP 反向代理负载均衡实验
  • NAT地址转换,静态NAT,高级NAT,NAPT,easy IP
  • 【Linux指南】Linux粘滞位详解:解决共享目录文件删除安全隐患
  • GaussDB 开发基本规范
  • XML Expat Parser:深入解析与高效应用
  • Python 列表内存存储本质:存储差异原因与优化建议
  • 第4章唯一ID生成器——4.2 单调递增的唯一ID
  • 【Android】卡片式布局 滚动容器ScrollView
  • Go语法入门:变量、函数与基础数据类型
  • 飞算科技重磅出品:飞算 JavaAI 重构 Java 开发效率新标杆
  • JAVA后端开发——用 Spring Boot 实现定时任务
  • 【Spring】Spring Boot启动过程源码解析
  • 鸿蒙打包签名
  • HarmonyOS 6 云开发-用户头像上传云存储
  • 前端工程化常见问题总结
  • Windows|CUDA和cuDNN下载和安装,默认安装在C盘和不安装在C盘的两种方法
  • AI技术革命:产业重塑与未来工作范式转型。
  • 深入解析MIPI C-PHY (四)C-PHY物理层对应的上层协议的深度解析
  • 齐护Ebook科技与艺术Steam教育套件 可图形化micropython Arduino编程ESP32纸电路手工
  • 湖南(源点咨询)市场调研 如何在行业研究中快速有效介入 起头篇