首页 > 其他分享 >剑指 Offer 16. 数值的整数次方

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

时间:2023-07-13 22:12:34浏览次数:54  
标签:return shu Offer int double 16 整数 次方

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

这是在面试时候,无准备折腾除了的递归写法。

class Solution {
    public double myPow(double x, int n) {
        // if(x==0) return 0;

        // long b = 
        if(n==0) return 1.0;
        if(n==1) return x;

        // 把n为负数的情况改为整数
        boolean flag = false;

        if(n<0){
            flag = true;
            n = -n;
        }

        double halfValue = myPow(x,n/2);

        double ans;

        if(n%2==0){
            ans = halfValue*halfValue;
        }else{
            ans = halfValue*halfValue*x;
        }

        if(flag){
            return 1/ans;
        }

        return ans;
    }
}

问题:这种写法只能算n>0的情况。小于0需要转化成整数。除了一个用例过不去,他选的是N为int负数的最大值

标准答案

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;
    }
}

作者:Krahets
链接:https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/solutions/112529/mian-shi-ti-16-shu-zhi-de-zheng-shu-ci-fang-kuai-s/

标签:return,shu,Offer,int,double,16,整数,次方
From: https://www.cnblogs.com/chenyi502/p/17552332.html

相关文章

  • 剑指offer
    《剑指Offer》读书笔记。感谢强哥给的书。希望明年的我也可以Offer满满~代码基本都在这里了:https://github.com/ixsim/OJProblemsP31单例模式classA{ staticAgetInstance();voidfunc();private:A();A(A&rth);~A();};AA::getInstance(){......
  • [COCI2016-2017#5] Ronald
    Problem一个国家的\(N\)个城市通过双向航线相连。规定一次操作为:选定其中一个城市开设该城市到其它所有城市的航线,同时取消该城市的原有航线请问是否存在一种操作方式,使得每两个城市之间都存在直达航线(操作次数不限)。\(2\leN\le1000\),\(0\leM\lt\dfrac{N(N-1)}{......
  • 多元一次方程的解(扩欧 + 构造)
    例题:SGU140题意:给出一个长度为n的非负整数序列A和两个数P,B,要求找出同样的非负整数序列X满足:\(A_1*X_1+A_2*X_2+...+A_n*X_n=B(modP)\)思路:看起来是一个多元一次方程,我们只需要找到一个合法的非负整数序列作为解即可,所以我们可以构造答案。我们可以求出......
  • 【雕爷学编程】Arduino动手做(160)---HLK-V20离线语音模块2
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......
  • docker-machine(v0.16.2)安装,云盘下载
    1、附件下载链接:https://pan.baidu.com/s/1WbTTCKosPuody3ni2UpCkQ提取码:9thm2、安装onosx:$curl-Lhttps://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname-s`-`uname-m`>/usr/local/bin/docker-machine&&\chmod+x/usr/loca......
  • AtCoder Beginner Contest 161
    AtCoderBeginnerContest161https://atcoder.jp/contests/abc161这套不算难,但是sb我还是写不出来是为什么呢F是个妙妙题C-ReplacingIntegerWA了一次所以放上来#include<bits/stdc++.h>#definelllonglongusingnamespacestd;intmain(){lla,b;c......
  • 【雕爷学编程】Arduino动手做(160)---海凌科HLK-V20离线语音模块
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......
  • HJ16 购物单
    1.题目读题HJ16 购物单  考查点01背包变种 2.解法思路 代码逻辑 具体实现 importjava.util.Scanner;//定义一个物品类,用来存储每个物品的信息classGood{intv;//物品价格intvp;//物品重要度乘价格intq;//物品是否为主件i......
  • P1216 [USACO1.5] [IOI1994]数字三角形
    自己的思想:要用逆序,但是某个未知的位置可能存在一个非常大的数,因此不知道如何dp看题解之后:对于倒数第二行的数,可以算出它们的最优解,依次往上推,第一个数就是整体的最优解,其实本质上可以用隔离意识来看,在搞最后一排时,将前面所有排隔离掉,在处理中间的每一排时,又将其他排隔离掉接下......
  • js 根据时间,输出几分钟前,几小时前,几天前,几个月前,几年前。 console.log(getDateDiff("
    js根据时间,输出几分钟前,几小时前,几天前,几个月前,几年前。原文链接:https://blog.csdn.net/qq_42740797/article/details/111277824代码1://时间戳转多少分钟之前functiongetDateDiff(dateTimeStamp){//时间字符串转时间戳vartimestamp=newDate(dateTimeStamp).g......