zoukankan      html  css  js  c++  java
  • LeetCode–数值的整数次方

    LeetCode–数值的整数次方

    博客说明

    文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

    介绍

    剑指 Offer 16. 数值的整数次方

    主站 50 题

    题目

    实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。

    示例 1:
    输入: 2.00000, 10
    输出: 1024.00000
    
    示例 2:
    输入: 2.10000, 3
    输出: 9.26100
    
    示例 3:
    输入: 2.00000, -2
    输出: 0.25000
    解释: 2-2 = 1/22 = 1/4 = 0.25
    

    思路

    • n&1 (与操作): 判断 n 二进制最右一位是否为 1 ;
    • n>>1 (移位操作): n 右移一位(可理解为删除最后一位)
    流程:
    • 当 x=0 时:直接返回 0 (避免后续 x = 1 / x 操作报错)。
    • 初始化 res = 1 ;
    • 当 n < 0 时:把问题转化至 n≥0 的范围内,即执行 x = 1/x ,n = - n ;
    • 循环计算:当 n = 0 时跳出;
      • 当 n & 1 = 1 时:将当前 x乘入 res (即 res *= x);
      • 执行 x = x^2(即 x *= x);
      • 执行 n右移一位(即 n>>=1)。
      • 返回 res

    代码

    class Solution {
        public double myPow(double x, int n) {
            if(x == 0){
                return 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

    以及勤劳的自己,个人博客GitHub

    微信公众号

  • 相关阅读:
    关于如在本地虚拟机上linux系统上设置静态的ip地址
    编程规约(下)-阿里巴巴Java开发手册
    编程规约(上) -- 阿里巴巴Java开发手册
    eclipse项目导入到idea
    博客收藏
    springboot springcloud
    idea配置maven仓库
    理项目
    日志管理
    [置顶] 2016年终总结
  • 原文地址:https://www.cnblogs.com/guizimo/p/13621121.html
Copyright © 2011-2022 走看看