美文网首页
面试题16-实现一个数的整数平方

面试题16-实现一个数的整数平方

作者: 小庄bb | 来源:发表于2017-09-05 14:13 被阅读3次

题目要求

实现一个数的整数平方

题目解析

思路一:

  • 分析

需要考虑到次方数的不同情况。当次方数为0;那么答案为1 ;当次方数为1;那么答案为base ;当base为0;那么答案为0 ;
我们的目标是获得一个数的exponent次方,那么如果exponent是个偶数,我们就可以先算出exponent/2次方的值然后平方。
如果是计数。我们可以得到exponent/2次方的值然后平方,然后乘上base。也就是
a^n = a^(n/2) * a^(n/2) (n为偶数)
a^n = a^(n/2) * a^(n/2) * a (n为奇数)
另外在进行除2运算以及判断奇偶数是的%运算都尽量用位运算代替,可以优化运行效率。

  • 代码段
public static double power(double base , int exponent) {
        
        double result = 0 ;
        
        if(exponent < 0 ) {
            result = PowerWithUsignedExponent(base , (0-exponent)) ;
            result = 1 / result ;
        }else {
            result = PowerWithUsignedExponent(base , (exponent)) ;
        }
        
        return result ;
    }
    
    public static double PowerWithUsignedExponent(double base , int exponent) {
        
        if(base == 0) {
            return 0 ;
        }
        
        if( exponent == 0 ) {
            return 1 ;
        }
        
        if(exponent == 1) {
            return base ;
        }
        
        double result = PowerWithUsignedExponent(base , exponent>>1 ) ;
        result *= result ;
        if((exponent & 0x1) == 1) {
            result *= base ;
        }
        
        return result ;
    }

测试代码

public static void main(String[] args) {
        
        System.out.println(power(2,2));
        System.out.println(power(0,2));
        System.out.println(power(2,0));
        System.out.println(power(2,1));
        System.out.println(power(-2,2));
        System.out.println(power(2,-2));
        System.out.println(power(-2,-2));
        
    }

运行结果

4.0
0.0

1.0
2.0
4.0
0.25
0.25


看完整源码戳源码地址

相关文章

  • 面试题16-实现一个数的整数平方

    题目要求 实现一个数的整数平方 题目解析 思路一: 分析 需要考虑到次方数的不同情况。当次方数为0;那么答案为1 ...

  • 吊打阿里面试官:聊聊synchronized的CPU原语级别实现

    面试题列表: 聊聊synchronized的CPU原语级别实现 有一千万个数,写一个程序进行高效求和 已知2开平方...

  • Leetcode-Easy 977. Squares of a

    题目描述 给定一个从小到大排序的整数数组A,然后将每个整数的平方和从小到大排序。 思路 直接求和每个数的平方和,然...

  • 剑指offer第二版-40.最小的k个数

    本系列导航:剑指offer(第二版)java实现导航帖 面试题40:最小的k个数 题目要求:找出n个整数中最小的k...

  • 剑指offer第二版-56.数组中只出现一次的两个数字

    本系列导航:剑指offer(第二版)java实现导航帖 面试题56:数组中只出现一次的两个数字 题目要求:一个整数...

  • ARTS Week 01

    Algorithm 题目 977. 有序数组的平方给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的...

  • LeetCode 每日一题 [33] 有序数组的平方

    LeetCode 有序数组的平方 [简单] 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组...

  • 第 2 天 双指针

    977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组...

  • 【算法竞赛】7744 算法

    概念 完全平方数 思想一: 把这个数字 开根号,把整数四舍五入了,如求平方,查看是否和原来的数字一样。

  • 快乐数

    题目: 题目的理解: 分解整数,平方和,分解整数。 python实现 想看最优解法移步此处 提交 // END 当...

网友评论

      本文标题:面试题16-实现一个数的整数平方

      本文链接:https://www.haomeiwen.com/subject/zdvujxtx.html