题解 | #求解立方根#
求解立方根
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));
}
}
vivo公司氛围 351人发布