`
frank-liu
  • 浏览: 1682504 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: Pow(x, n)

 
阅读更多

问题描述:

Implement pow(xn).

原问题链接:https://leetcode.com/problems/powx-n/

 

问题分析

  这个问题在之前的文章里有讨论过,因为要求x的n次方。我们可以将指数n当做一个二进制的数字来看。每次当前值x表示最低位0。当x * x的时候表示第一位1的基准值,这样依次x * x下去。而n则每次对2求模来看最低位,如果是1则乘以当前x的值。

  在实际的实现里要考虑指数的正负值,另外要防止一些数字溢出。按照之前一些将类型转换成更长类型的方法来 处理,比如将int转成long类型。具体代码实现如下:

 

public class Solution {
    public double myPow(double x, int n) {
        double result = 1;
        long l = Math.abs((long)n);
        while(l > 0) {
            if((l & 1) == 1) result *= x;
            x *= x;
            l >>= 1;
        }
        return n < 0 ? 1 / result : result;
    }
}

 

1
2
分享到:
评论

相关推荐

    LeetCode:JavaScript JavaScript对LeetCode的解决方案

    atoi盛最多水的容器三数之和最接近的三数之和四数之和删除链表的倒数第 n 个节点括号生成两两交换链表中的节点两数相除在排序数组中查找元素的第一个和最后一个位置有效的数独字符串相乘字母异位词分组pow-...

    leetcode338-leetcode:leetcode

    pow(x, n) :check_mark_button: 53. 最大子阵列 :check_mark_button: 55. 跳跃游戏 2月21日 :check_mark_button: 41.第一个缺失的阳性 水问题 - dp :check_mark_button: :glowing_star: 42. 收集雨水 :check_mark_...

    js-leetcode题解之50-powx-n.js

    js js_leetcode题解之50-powx-n.js

    C语言-leetcode题解之50-powx-n.c

    c语言入门 C语言_leetcode题解之50-powx-n.c

    leetcode卡-July-Challenge-Leetcode:七月-挑战-Leetcode

    天:Pow(x,n) () 第17天:前K个频繁元素() 第 18 天:课程表 II () 第 19 天:添加二进制 () 第 20 天:删除链表元素 () 第 21 天:单词搜索 () 第22天:二叉树之字形水平顺序遍历() 第 23 天:单数 III () 第 ...

    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个最大...

    扔鸡蛋leetcode-Leetcode:力码

    编写程序计算pow(x, y) 50. pow(x, n) 5.7 计算 x^y 2. 给定一个指向单向链表中要删除的节点的指针,如何删除它? 237. 删除链表中的节点 2.3 删除中间节点 3.从第一个字符串中删除出现在第二个字符串中的字符 4. ...

    LeetCode:leetcode题解,记录自己的leetcode解题之路

    Pow(x,n)](#50。Pow(x,n)) [257。(#257。二叉树的所有路径) [230。二叉搜索树中第K小的元素](#230。二叉搜索树中第K小的元素) [119。杨辉三角II](#119。杨辉三角II) [136。只出现一次的数字]...

    leetcode中国-LeetCode:力扣合集

    pow(x, n) 34. 查找有序数组中元素的首尾位置 1-是 35. 搜索插入位置 1-是 658. 找出 K 个最近的元素 1-否 33. 在旋转排序数组中搜索 1-否 81. 在旋转排序数组中搜索 II 1-否 153. 在旋转排序数组中求最小值 154. 在...

    leetcode和oj-leetcode:leetcode

    Pow(x,n) 58 最后一句话的长度 88 合并排序数组 100同一棵树 101 对称树 104 二叉树的最大深度 3 无重复字符的最长子串 4月14日 第107章 二叉树层次遍历二 4 月 18 日搜索 274 国指 34 搜索范围 33 在旋转

    leetcode分类-LeetCode:LeetCode在线裁判C++

    Pow(x,n) 优化 Permutations (交换 取子集两种方式) Trie树 11 中序遍历 无堆栈 (前序 后序) 12 map边删除 边输出 不太建议这么用。。。 以及其他基本用法 iterate 红黑树 13.set 16.unordered_map 与 map 17.最大...

    猜单词leetcode-leetcode:我的leetcode

    猜单词leetcode 通过 leetcode 学习数据结构与算法 数据结构 data structure 数组(栈 队列) 链表 ...50.pow-x-n.js 69.x-的平方根.js 278.第一个错误的版本.js 374.猜数字大小.py 递归 recursion +

    leetcode530-LeetCode:力码

    Pow(x, n) 51-60 N-皇后 N-Queens II 最大子阵列 螺旋矩阵 跳跃游戏 合并间隔 插入间隔 螺旋矩阵 II 排列顺序(无法访问文章) 61-70 轮换名单 独特的路径 独特的路径 II 最小路径和(无法访问文章) 有效号码 加一

    lrucacheleetcode-leetcode:leetcode

    Pow(x, n) 26.90% 中等的 54 螺旋矩阵 28.60% 中等的 31 下一个排列 29.40% 中等的 139 断字 33.10% 中等的 56 合并间隔 33.60% 中等的 228 汇总范围 34.10% 中等的 208 实现 Trie(前缀树) 34.70% 中等的 388 最长...

    leetcode分发糖果-LeetCode:力码

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

    lrucacheleetcode-Leetcode:力码

    pow(x, n) 方法:二分查找 53. 最大子阵列 方法一:分而治之: A[low...high] 的任何连续子数组 A[i...j] 必须正好位于以下位置之一: (1) 完全在子数组 A[low...mid] 中,使得 low &lt;= i &lt;= j &lt;= mid; (2)...

    leetcode1185-LeetCode:这是我的LeetCode解决方案和笔记的笔记本

    Pow(x, n) 列表 #1431. 拥有最多糖果的孩子 #1385. 找出两个数组之间的距离值 #1337. 矩阵中最弱的 K 行 #15. 3Sum(前指针和后指针) #347. 前 K 个频繁元素(堆) #203. 删除链表元素 动态规划 #1043. 最大和的...

    leetcode分类-Leetcode:练习编码面试问题

    Pow(x, n) 同一棵树 子集 根到叶数求和 成对交换节点 对称树 有效回文 验证二叉搜索树 恢复 IP 地址 组合 交错字符串(dp 是最好的) 组合和II 电话号码的字母组合 词搜索 从中序和后序遍历构造二叉树 从前序和中序...

    Leetcode:更大的LeetcodeLösungen

    49组Anagrams视频讲解50 Pow(x,n)视频讲解51 N-Queens视频讲解52 N-Queens II视频讲解53最大子数组视频讲解54螺旋矩阵视频讲解55跳转游戏视频讲解56合并间隔视频讲解57插入间隔视频讲解59螺旋矩

Global site tag (gtag.js) - Google Analytics