文章目录:
- 题目要求--分析
- 具体实现--动手
- 源码分析--知其然,知其所以然
- 算法质量
- 总结
1. 题目要求--分析
第一题:实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
第二题:实现 pow(x, n) ,即计算 x 的 n 次幂函数。
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
2. 具体实现--动手
第一题:
class Solution {
public int mySqrt(int x) {
int result = 0;
if (x < 0) {
return x;
}
else if(x == 0) {
return 0;
}
else {
result = (int) Math.sqrt(x);
return result;
}
}
}
第二题:
class Solution {
public static double myPow(double x, int n) {
if(n < 0){
return 1/pow(x, -n);
} else {
return pow(x, n);
}
}
private static double pow(double x, int n){
if(n == 0){
return 1.0;
}
if(n == 1){
return x;
}
double val = pow(x, n/2);
if(n % 2 == 0){
return val * val;
} else {
return val * val * x;
}
}
}
3. 源码分析--知其然,知其所以然
思想上入门:先从简单的做起,给自己一点信心和做出来后的成就感。
行动上入门:拿到题目,先理清自己计算时的思路。然后按照思路把程序写出来。
第一题:
1、 x 是非负整数--出现分类讨论
2、计算 x 的平方根--Math.sqrt()
3、返回类型是整数--int
第二题:
如果n是偶数,xn xn= x2n;
如果n是奇数,xn xnx=x2n+1;
4. 算法质量
时间 O(logN) ;空间 O(logN)。
5. 总结
- 在这个世界上,不是每个国家、每个时代、每个人都有权利去追求自己所喜欢的未来。所以如果你侥幸可以,请不要错过。--吴晓波