`

Pow(n, x)题目总结

阅读更多
有关计算一个数幂的题目考查我们对于边界问题的处理,比如如何处理负数越界问题,以及如何通过位运算提高运算速度。这里列举leetcode中有关pow()方法的两道题目。

1,Power of Two
给定一个整数,判断这个数是否是2的幕。

这道题目比较简单,我们通过位与运算就可以解决,有关位运算的知识大家可以参考位运算这篇文章。代码如下:
public class Solution {
    public boolean isPowerOfTwo(int n) {
        
        if(n < 0) return false;
        return (n & (n-1)) == 0;
     }
}


2,Pow(x, n)
实现Pow(x, n)方法。x为double型,n为int型。

这道题目考查我们如何处理越界问题,例如n为-128时,我们如果直接取绝对值,这时n就会越界,我们要单独考虑这种情况。其次为了提高运算速度,我们用位移来处理每次运算。实现代码如下:
public class Solution {
    public double myPow(double x, int n) {
        if(n == 0)  
            return 1.0;  
        if(n < 0) {
            if(n == Integer.MIN_VALUE)
                return 1.0 / (myPow(x, Integer.MAX_VALUE) * x);
            return 1.0 / myPow(x, -n);
        }
        double ans = 1.0 ;  
        for(; n > 0; n >>= 1) {  
            if((n & 1) > 0)  
                ans *= x; 
                x *= x;
        }  
        return ans;  
    }
}
分享到:
评论

相关推荐

    ACM相关的资料(题目+资料)

    ACM相关的资料(题目+资料) ================================================================ 数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs...

    C语言复习题目

    A) #define B) _123 C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是 。 A) print B) i\am C) Pxq D) str_l _3d one_half My-&gt;book Cpp oodbs tart$it line# pow aBc 3pai His.age ...

    leetcode答案-LeetcodeTopAnswer:https://leetcode-cn.top的回答

    50.pow-x-n 题目: 答案: 69.x-的平方根 题目: 答案: 70.爬楼梯 题目: 答案: 94.二叉树的中序遍历 题目: 答案: 101.对称二叉树 题目: 答案: 141.环形链表 题目: 答案: 206.反转链表 题目: 答案: 剑指...

    leetcode中国-LeetcodeSolution:LeetCode题目-Java解法(持续更新)

    leetcode中国 LeetcodeSolution leetcode题目解法(持续更新) ...Pow(x, n) divide and conquer 51 N皇后 backtracking 52 N皇后 II backtracking 54 螺旋矩阵 array 62 不同路径 dynamic program

    leetcode跳跃-CodingInterviews:这只是一个刷题笔记啊

    n).md](Leetcode/0050-Pow(x, n).md) 中等 困难 困难 简单 中等 中等 中等 困难 简单 中等 困难 中等 中等 中等 中等 困难 简单 简单 困难 简单 简单 中等 困难 中等 中等 中等 困难 中等 中等 中等 中等 中等 中等 ...

    软件课程设计 试验报告 代码 演示

    在对题目理解的基础上,以及题目中所给出的要求,我认为此问题可以通过模拟指针循环查找的方法来实现题目所给的限定。在淘汰人员时,我准备利用一个布尔数组来存放这n个人的状态(是否被淘汰),然后通过一个point...

    leetcode题库-LeetCode::check_mark_button:力扣解决方案!!!

    Pow(x, n) Medium 56 合并区间 Medium 136 只出现一次的数字 Easy 137 只出现一次的数字 II Medium 169 求众数 - Easy O(nlogn) 169 求众数 - Easy O(n) 摩尔根投票法 172 阶乘后的零 Easy 215 数组中的第K个最大...

    Crypto 2020网鼎杯 you raise me up Writeup (离散对数)

    关键点:离散对数、同余运算 知识点:Antigonae整理的相关概念 看不懂-.-以后再研究,简单理解为: 普通对数为 a ** x=b (求x=logab) 离散对数为 a ** x=b % p ...c = pow(m, bytes_to_long(flag), n) print 'm =

    Leetcode扑克-coding-interviews:编码面试

    Leetcode扑克 项目简介 该项目为《剑指Offer》题解 OnlineJudge 题目 个人建议能使用LeetCode还是尽量用LeetCode。...Pow(x, n) 调整数组顺序使奇数位于偶数前面 905. Sort Array By Parity 链表中倒数第

    cpp-算法精粹

    Pow(x,n) Sqrt(x) 贪心法 Jump Game Jump Game II Best Time to Buy and Sell Stock Best Time to Buy and Sell Stock II Longest Substring Without Repeating Characters Container With Most Water Patching ...

    删除无效括号leetcodeJava-ZY-LeetCode:zy的leetcode解决方案

    删除无效括号 leetcode ...Pow(x, n) M 2018-6-7 北京 Y 无重复字符的最长子串 M 2018-6-10 北京 Y 删除排序数组中的重复项 E 2018-6-13 北京 Y 字符串转整数 M 2018-6-15 北京 Y 有效的括号 E 2018-

    leetcode分发糖果-LeetCode:力码

    50.Pow(x, n) 分治算法-二分查找 14 162.寻找峰值 分治算法-二分查找 19-3-22 15 29.两数相除 分治算法-二分查找 16 34.在排序数组中查找元素的第一个和最后一个位置 分治算法-二分查找 17 101.对称二叉树

Global site tag (gtag.js) - Google Analytics