0%

leetcode 67 Solution

代码解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.demo.s67;

/**
* x 的平方根
* 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
*
* 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
*
* 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
*
*
*
* 来源:力扣(LeetCode)
* 链接:https://leetcode.cn/problems/sqrtx
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*/
public class Solution {
public int mySqrt(int x) {
int l = 0;
int r = x;
int ret = 0;
//中间值 二分法
int mid = 0;
//左右移动 l r
while(l <= r) {
mid = (l + r)/ 2;
long tmp = (long)mid * mid;
if(tmp == x) {
return mid;
}
if(tmp <= x) {
ret = mid;
l = mid + 1;
} else {
r = mid - 1;
}
}
return ret;
}
}