Mlog1: LeetCode--x的平方根 & x 的 n次幂

2019-4-1

文章目录:

  1. 题目要求--分析
  2. 具体实现--动手
  3. 源码分析--知其然,知其所以然
  4. 算法质量
  5. 总结

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. 总结

  • 在这个世界上,不是每个国家、每个时代、每个人都有权利去追求自己所喜欢的未来。所以如果你侥幸可以,请不要错过。--吴晓波
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容