Day37 x 的平方根
2021-03-03 本文已影响0人
Shimmer_
实现 int sqrt(int x) 函数。
https://leetcode-cn.com/problems/sqrtx/
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去
示例1:
输入: 4
输出: 2
示例2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。
Java解法
思路:
- 一开始不知道怎么处理,看了下提示,二分查找可以用来处理这个
package sj.shimmer.algorithm.m2;
/**
* Created by SJ on 2021/3/2.
*/
class D37 {
public static void main(String[] args) {
System.out.println(mySqrt(4));
System.out.println(mySqrt(8));
System.out.println(mySqrt(48));
}
public static int mySqrt(int x) {
int left = 0;
int right = x;
int result = -1;
while (left<right){
int mid = (left+right)/2;
if ((long)mid*mid<=x) {
result = mid;
left = mid+1;
}else {
right = mid-1;
}
}
return result;
}
}
image
官方解
https://leetcode-cn.com/problems/sqrtx/solution/x-de-ping-fang-gen-by-leetcode-solution/
-
二分查找
参考解法,边界判断坑了我一下,不过大佬写法就是牛逼
- 时间复杂度:O(logx)
- 空间复杂度:O(1)
-
牛顿迭代、袖珍计算器算法(盲区)