【leetcode刷题笔记】Sqrt(x)

Implement int sqrt(int x).

Compute and return the square root of x.


 

题解:二分的方法,从0,1,2.....x搜索sqrt(x)的值。

代码如下:

复制代码
 1 public class Solution {
 2     public int sqrt(int x) {
 3         long l = 0;
 4         long r = x;
 5         
 6         while(l <= r){
 7             long mid = l + (r-l)/2;
 8             if(x == mid*mid)
 9                 return (int)mid;
10             else if(x < mid*mid)
11                 r = mid-1;
12             else {
13                 l = mid+1;
14             }
15         }
16         return (int)r;
17     }
18 }
复制代码

需要注意的一点就是mid*mid的值有可能超过int的范围,所以要用long型规定各个变量。开始用的int型,结果出现了TLE的错误,猜想是int越界以后变成负数,就一直找不到sqrt(x)的值。

posted @   SunshineAtNoon  阅读(214)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示