当前位置: 首页 > 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.xdnf.cn/news/1204669.html

相关文章:

  • RCLAMP2574N.TCT Semtech:超低钳位TVS二极管 0.5pF超低电容+±30kV超强防护
  • FastGPT本地构建工作流高级编排(最新4.11.0)
  • 【云馨AI-大模型】2025世界人工智能大会引爆全球AI热潮,技术突破与政策布局引领产业新未来
  • 4、如何生成分布式ID?
  • C++中既重要又困难的部分—类和对象
  • 【历史人物】【韩愈】简历与生平
  • sqlite3学习---基础知识、增删改查和排序和限制、打开执行关闭函数
  • 归雁思维:解锁自然规律与人类智慧的桥梁
  • LLM学习笔记5——InstructGPT
  • Kotlin的datetime库
  • Linux内核驱动开发核心问题全解
  • 四、计算机组成原理——第4章:指令系统
  • 基于Spring Boot+Vue的吉他社团系统设计和实现(协同过滤算法)
  • 飞鹤困局:增长神话的裂痕
  • 分布式数据库中的“分布式连接”(Distributed Joins)
  • 轻资产革命:连合直租如何用DaaS模式重塑企业资产逻辑
  • 阿里云 【免费试用】MCP 赋能可视化 OLAP 智能体应用
  • 网络安全第14集
  • React与Rudex的合奏
  • KubeSphere理论及实战
  • ros2的package.xml和rosdep
  • 正则表达式 速查速记
  • haproxy原理及实验演示(实现服务器集群的负载均衡)
  • ubuntu资源共享samba 安装与配置 mac/windows共享ubuntu文件资源
  • 无人机喷洒系统技术要点与难点解析
  • AR眼镜:工业4.0时代高风险作业的安全守护者
  • 【WRF-Chem教程第七期】闪电-NOx 参数化方案详解
  • 自学嵌入式 day36 数据库
  • 前段面试题新版
  • 【华为机试】5. 最长回文子串