题目描述

实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
  由于返回类型是整数,小数部分将被舍去。

解题思路

使用二分查找,找到最后一个平方值小于x的数

语言积累和技巧

1、将平方值转为long类型,避开溢出问题
2、使用46340 这个最大的可能值,可以减少几次运算
3、编写程序的时候,取到最后一个平方值小于x的数(y),下一个的话,因为mid-1的原因会导致low >= high,所以会退出循环,我们将y返回即可。可以减少几个逻辑判断

代码链接

https://github.com/lunaDolphi...
https://github.com/lunaDolphi...


blueDolphin
12 声望1 粉丝