资讯专栏INFORMATION COLUMN

【刷算法】数值的整数次方

jsummer / 1136人阅读

摘要:题目描述给定一个类型的浮点数和类型的整数。分析可以采取暴力的解决办法,把乘以次就可以得到结果,但我们肯定不是想要这样的方法。观察相乘的过程,比如,其实可以写成,而且,,我们可以利用高次方的幂可以由低次方的幂相乘得来。

题目描述

给定一个double类型的浮点数a和int类型的整数m。求a的m次方。

分析

可以采取暴力的解决办法,把a乘以m次就可以得到结果,但我们肯定不是想要这样的方法。

观察相乘的过程,比如a^7,其实可以写成a^1*a^2*a^4,而且a^4=a^2*a^2,
a^2=a*a,我们可以利用高次方的幂可以由低次方的幂相乘得来。

代码实现
function Power(a, m)
{
    var isNegative = false;
    if(m === 0)
        return 1;
    else if(m < 0){
        if(a === 0)
            throw new Error();
        else{
            isNegative = true;
            m = -m;
        }
    }
    
    var res = 1, cur = a;
    while(m !== 0) {
        if(m & 1 === 1){
            res = res * cur;
        }
        cur = cur * cur;
        m = m >>> 1;
    }
    
    return isNegative ? 1/res : res;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95812.html

相关文章

  • 按位操作符

    摘要:将任一数值与执行按位与操作,其结果都为。中应用判断奇偶性偶数奇数按位异或规则每一位都不同,结果才为将任一数值与进行异或操作,其结果为。 位运算在算法中很有用,速度可以比四则运算快很多。 To2orTo10 JS中十进制转二进制: (val).toString(2)JS中二进制转十进制: parseInt(val, 2) JS中规定安全整数的范围是-2^53~2^53,所以大于90071...

    caiyongji 评论0 收藏0
  • 【LeetCode】字符串初级算法-颠倒整数

    摘要:题目描述颠倒整数给定一个位有符号整数,将整数中的数字进行反转。根据这个假设,如果反转后的整数溢出,则返回。思路字符串和数组的之间的转换用和实现的次方 题目描述 颠倒整数给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321示例 3: 输入: 120输出: 21注意: 假设我们的环境只能存储 32 位...

    wua_wua2012 评论0 收藏0
  • 由left-pad扯到JS中位运算

    摘要:原码补码和反码原码一个数在计算机中是以二进制的形式存在的,其中第一位存放符号正数为负数为。中的位运算在中按位操作符会将其操作数转成补码形式的有符号位整数。原文链接由扯到中的位运算 这个话题的由来是2016年3月份的时候 NPM 社区发生了‘left-pad’事件,不久后社区就有人发布了用来补救的,也是现在大家能用到的 left-pad 库。 最开始这个库的代码是这样的。 module....

    LeoHsiun 评论0 收藏0
  • 额,又是一道装逼解法算法

    摘要:题目难度为,目前通过率为。这个特殊的数有如下特点足够大,但不能超过位,即最大为个它的二进制表示中奇数位为,偶数位为符合这两个条件的二进制数是如果用一个的幂次方数和它做与运算,得到的还是的幂次方数。将这个二进制数转换成进制表示。 题目来源于 LeetCode 上第 342 号问题:4 的幂。题目难度为 Easy,目前通过率为 45.3% 。 题目描述 给定一个整数 (32 位有符号整数)...

    Zack 评论0 收藏0
  • 算法】LeetCode.26-从排序数组中删除重复项

    摘要:题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。示例给定函数应该返回新的长度并且原数组的前五个元素被修改为。也就是说,不对实参做任何拷贝在函数里修改输入数组对于调用者是可见的。 题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输...

    wua_wua2012 评论0 收藏0

发表评论

0条评论

jsummer

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<