题解 | #求解立方根#

求解立方根

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

二分法

由于参数是在实数范围内,所以需要注意的两个点:

  • double的相等判断 (1f - 0.9f == 0.9f - 0.8f)的值是false
  • 二分查找的边界
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        binarySearch(in.nextDouble());
    }

    static void binarySearch(double d) {
        double l, r;
        if (1f < d) {
            l = 1f;
            r = d;
        } else if (0f < d && d < 1f) {
            l = d;
            r = 1f;
        } else if (-1 < d && d < 0) {
            l = -1f;
            r = d;
        } else {
            l = d;
            r = -1f;
        }
        // 上面这个表达式可以写成这样 但是会搜索一些没必要的区域
        // double l = Math.min(-1, d);
        // double r = Math.max(1, d);
        while (true) {
            double mid = 0.5 * r + 0.5 * l;
            double c = cube(mid);
            if (equals(c, d)) {
                System.out.printf("%.1f", mid);
                break;
            } else if (c > d) {
                r = mid;
            } else {
                l = mid;
            }
        }
    }

    static boolean equals(double a, double b) {
        return Math.abs(a - b) < 1E-2;
    }

    static double cube(double d) {
        return d * d * d;
    }
}
#华为笔试#
全部评论

相关推荐

今天 13:04
已编辑
门头沟学院 算法工程师
智谱和米哈游都是ai大模型agent的业务钱的话还是米更多,几乎翻倍了,有没有老哥是两个公司其中一个的,能问问转正率咋样嘛,我问的hr回答都是做的好就可以转正暑期实习
码农索隆:选米哈游:短期高薪、敢承担风险、具备强创新能力,且愿押注游戏AI赛道。 选智谱:稳定性与行业通用能力积累,接受薪资差距以换取更稳妥的职业基础。
投递米哈游等公司7个岗位 > 实习期间如何提升留用概率?
点赞 评论 收藏
分享
千疮百孔的象牙塔:我也在捣鼓im,你这个im好奇怪的样子,单看简历get不到点,im的消息及时性,消息可靠性,然后系统的可扩展性这几个关键问题都是怎么解决的从简历描述get不到,具体说消息怎么传,消息怎么推送,消息怎么存,消息安全怎么做的这些点感觉对应不起来
点赞 评论 收藏
分享
玉无心❤️:发照片干啥 发简历啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务