带你快速刷完67道剑指offer
这是四则或许对你有些许帮助的信息:
1、👉 最近我发现了一个每日都会推送最新校招资讯的《校招日程》文档,其中包括往届补录、应届实习校招信息,比如各种大厂、国企、银行、事业编等信息都会定期更新,帮忙扩散一下。
2、😍 免费分享阿秀个人学习计算机以来收集到的免费学习资源,点此白嫖;也记录一下自己以前买过的不错的计算机书籍、网络专栏和垃圾付费专栏。
3、🚀如果你想在校招中顺利拿到更好的offer,阿秀建议你多看看前人踩过的坑和留下的经验,事实上你现在遇到的大多数问题你的学长学姐师兄师姐基本都已经遇到过了。
4、🔥 欢迎准备计算机校招的小伙伴加入我的学习圈子,一个人踽踽独行不如一群人报团取暖,圈子里沉淀了很多过去21/22/23届学长学姐的经验和总结,好好跟着走下去的,最后基本都可以拿到不错的offer!此外,每周都会进行精华总结和分享!如果你需要《阿秀的学习笔记》网站中📚︎校招八股文相关知识点的PDF版本的话,可以点此下载 。
# No12、数值的整数次方
# 题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。
# 示例1
输入
2.00000,3
1
返回值
8.00000
1
示例2
输入
2.10000,3
1
返回值
9.26100
1
示例3
输入
2.00000,-2
1
返回值
0.25000
1
说明
2的-2次方等于1/4=0.25
1
# 1、主要要注意正负数的情况,要注意分开
运行时间:3ms 占用内存:520k
double Power(double base, int exponent) {
if( exponent == 0) return 1.0;
if( base == 0.0 ) return 0.0;//保证不同时为0,先处理各自为0的情况
bool flag = false;//判断指数是否为负
if( exponent < 0) {
flag = true;
exponent *=-1;//如果为负数,则将指数转正
}
double res = base;
for(int i = 2;i <= exponent; ++i){
res *=base;//逐渐递乘
}
if(flag) return 1.0/res;
else
return res;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 2、快速幂算法,值得好好看看,力扣上的要求更严谨一些
https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/
执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:5.9 MB, 在所有 C++ 提交中击败了100.00%的用户
double myPow(double x, int n) {
if( n == 0) return 1;
if( x == 0.0) return 0;
long exp = n;//
if(n < 0) {
exp = n* (-1.0);//,当n == INT_MIN时正数时大于INT_MAX的,所以要用一个大于 INT_MAX的类型来保存,同时在将他转正的时候, n*(-1)的结果依然是一个 int,此时的int是个隐藏类型,然后才将这个结果赋值给 exp,所以用来保存结果值的不应该是个int型,我们用double型的 -1 ,这样就可以将相乘的结果值保存为一个 double类型了,然后再进行赋值
}
double res = 1.0;
while(exp != 0){
if( (exp &1) == 1 ){
res *=x;
}
x *=x;
exp >>= 1;
}
return n<0 ? 1/res: res;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20