LeetCode力扣每日一题(Java):69、x 的平方根
2023-12-15 11:50:04
一、题目
二、解题思路
1、 我的思路
我的思路是直接循环暴力破解,定义计数器i,从1开始递增,直到i*i大于或等于x
于是有了如下代码
int i = 1;
while(true){
if(i*i<x){
i++;
}else if(i*i==x){
return i;
}else{
return i-1;
}
}
但提交之后超出了时间限制,看来需要改进代码质量
?哦对了,这是作者写的另一段代码,其实思路和上一段代码基本一样,但是在输入2147395599时却没有得到期望的结果,程序在第一次循环时就return了,输出结果是1073697799,明明i*i>x,为什么循环还是走了if,没走else呢?期待小伙伴们的解答
public class LeetCode69 {
public static void main(String[] args) {
System.out.println(mySqrt(2147395599));
}
public static int mySqrt(int x) {
if(x==1){
return 1;
}
int i = x/2;
while(true){
if(i*i<=x){
return i;
}else{
i--;
}
}
}
}
?
2、官方题解
因为官方题解提供了三种方法,我还没搞明白,先空着,到时候补上,我想先搞清楚上一段代码为什么输出结果是1073697799……哭哭,如果大家知道为什么的话帮帮孩子
文章来源:https://blog.csdn.net/lbcbjtlhmjq/article/details/135009142
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!