leetcode 69. x 的平方根-java实现
题目所属分类
简单的二分
原题链接
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
代码案例:输入:x = 4
输出:2
题解
就是y*y小于等于x 我们要找到满足条件的最大y
首先就是二分法 然后mid^2 <= x 答案就在mid的右边
所以答案的范围就是[mid,x] 更新的话就是l = mid
另一半就是[l,mid-1] r=mid-1
由于是l = mid 所以求mid的时候要加一
class Solution {
public int mySqrt(int x) {
int l = 0 ;
int r = x ;
while( l < r ){
// int mid = l + r + 1 >> 1 ;
int mid = (int)(l + r + 1L >> 1) ; //这里可能会越界
//mid 平方可能越界
if(mid <= x / mid) l = mid ;
else r = mid - 1 ;
}
return l ;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)