LeetCode(剑指 Offer)- 16. 数值的整数次方

Posted 放羊的牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(剑指 Offer)- 16. 数值的整数次方相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

题目大意:

解题思路

相关企业

  • 字节跳动
  • Facebook
  • 亚马逊(Amazon)
  • 彭博(Bloomberg)
  • 谷歌(Google)
  • 微软(Microsoft)
  • 优步(Uber)
  • 高盛集团(Goldman Sachs)
  • 苹果(Apple)
  • 领英(LinkedIn)

AC 代码

  • Java
// 解决方案(1)
// 模拟版
class Solution 
    public double myPow(double x, int n) 
        long maxn = n;
        if (n == 0 || x == 1) return 1.0;
        if (x == -1) return n % 2 == 0 ? 1.0 : -1.0;
        if (n < 0 && -maxn > 50) return 0.0;
 
        double res = 1.0;
        boolean flag = false;
        if (n < 0) 
            n = -n;
            flag = true;
        
        while (n-- != 0) 
            res *= x;
        
        if (flag) 
            res = 1.0 / res;
        
        res = ((int)(res * 100000 + 0.5)) / 100000.0;
        return res;
    

 
// 解决方案(2)
// 快速幂版
class Solution 
    public double myPow(double x, int n) 
        if(x == 0.0f) return 0.0d;
        long b = n;
        double res = 1.0;
        if(b < 0) 
            x = 1 / x;
            b = -b;
        
        while(b > 0) 
            if((b & 1) == 1) res *= x;
            x *= x;
            b >>= 1;
        
        return res;
    
  • C++
class Solution 
public:
    double myPow(double x, int n) 
        if(x == 0.0f) return 0.0;
        long b = n;
        double res = 1.0;
        if(b < 0) 
            x = 1 / x;
            b = -b;
        
        while(b > 0) 
            if((b & 1) == 1) res *= x;
            x *= x;
            b >>= 1;
        
        return res;
    
;

以上是关于LeetCode(剑指 Offer)- 16. 数值的整数次方的主要内容,如果未能解决你的问题,请参考以下文章

总结leetcode剑指offer分类学习速成

LeetCode1269. 停在原地的方案数 / 剑指 Offer 38. 字符串的排列 / 216. 组合总和 III / 剑指 Offer 39. 数组中出现次数超过一半的数字/229. 求众数(

LeetCode692. 前K个高频单词 / 剑指 Offer 50. 第一个只出现一次的字符 / 剑指 Offer 51. 数组中的逆序对 / 2. 两数相加

[LeetCode]剑指 Offer 49. 丑数

[LeetCode]剑指 Offer 49. 丑数

LeetCode 477 / 剑指 Offer 63 / 64 /65 / 66