题解 | #求解立方根#

求解立方根

https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca

二分法获取值。

如果结果逼近了一个范围,说明获取到了结果

如果没有,则看获取的结果和要得到的值大小关系

1、如果结果小于当前值,说明获取的结果过大,将right=mid

2、如果结果大于当前值,说明获取的结果过小,则left=mid

时间、O(log2 n) n是输入的值。

空间复杂度O(1)

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Double dd = in.nextDouble();
        Double zeroNum = 0.001;
        Double left = Math.min(-1,dd);
        Double right =Math.max(1,dd);
        Double result=0D;
        while(left<right){
            Double mid =left+(right-left)/2;
            if(Math.abs(mid*mid*mid-dd)>zeroNum){
                if(mid*mid*mid>dd){
                    right=mid;
                }else{
                    left=mid;
                }
               
            }else{
                result=mid;
                break;
            }
        }
         
        System.out.println(String.format("%.1f",result));
    }
}

全部评论

相关推荐

码农索隆:卡学历都不行了,开始卡颜值了
点赞 评论 收藏
分享
程序员小白条:找的太晚,别人都是大三实习,然后大四秋招春招的,你大四下了才去实习,晚1年
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务