leetcode刷题61.x 的平方根——Java版
Posted 一条coding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode刷题61.x 的平方根——Java版相关的知识,希望对你有一定的参考价值。
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐
二分查找,用x/m<m而不是m*m>x防止溢出
——leetcode此题热评
前言
哈喽,大家好,我是一条。
糊涂算法,难得糊涂
《糊涂算法》专栏上线倒计时——7天
Question
69. x 的平方根
难度:简单
给你一个非负整数 x ,计算并返回 x 的 平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
示例 1:
输入:x = 4 输出:2
示例 2:
输入:x = 8 输出:2
解释:8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。
提示:
0 <= x <= 231 - 1
Solution
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5
转换一下思维,把开放换成平方,那此题变为查找一个有确定范围的整数,且满足单调性(排好序)
立即推——二分查找
Code
所有
leetcode
代码已同步至github欢迎
star
/**
* @author 一条coding
*/
class Solution {
public int mySqrt(int x) {
int l = 0, r = x, ans = -1;
while (l <= r) {
int mid = l + (r - l) / 2;
if ((long) mid * mid <= x) {
ans = mid;
l = mid + 1;
} else {
r = mid - 1;
}
}
return ans;
}
}
Result
复杂度分析
- 时间复杂度:O(logN)
🌈寻宝
⭐今天是坚持刷题更文的第53/100天
⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力
⭐更多算法题欢迎关注专栏《leetcode》
为了回馈各位粉丝,礼尚往来,给大家准备了一些算法教学视频和电子书
需要的小伙伴可以点这里
以上是关于leetcode刷题61.x 的平方根——Java版的主要内容,如果未能解决你的问题,请参考以下文章