We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
实现 int sqrt(int x) 函数。
int sqrt(int x)
计算并返回x的平方根,其中x是非负整数。
x
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例1:
输入: 4 输出: 2
示例2:
输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。
Math
// 取幂 function mySqrt(x) { if(x === 0 || x === 1) return x return Math.floor(Math.pow(x, 0.5)) } // 直接平方 function mySqrt(x) { if(x === 0 || x === 1) return x return Math.floor(Math.sqrt(x)) }
当然这么写就没有任何意义了,能被拍死!
从示例中可以看出,平方根的值如果是个小数,则会将小数部分舍去,即Math.floor(x),因此我们可以得到:
Math.floor(x)
边界场景
function mySqrt(x) { if(x === 0 || x === 1) return x let left = 1 let right = Math.floor(x / 2) while(left < right) { // 获取中位数,此时向上取整 let m = Math.ceil(left + (right - left) / 2) // 如果使用乘法即m * m > x来判断就有可能出现溢出的情况,因此改用除法 // 如果区间中位数的平方大于x,则表明结果应该是在m的左侧区间 // 如果相等,则返回中位数 if(m === x / m) return m if(m > x / m) { right = m - 1 } else { // 小于的话则表明在右侧区间 left = m } } return left }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
题目
实现
int sqrt(int x)
函数。计算并返回
x
的平方根,其中x
是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例1:
示例2:
方法一: 使用
Math
方法当然这么写就没有任何意义了,能被拍死!
方法二:二分查找
思路
从示例中可以看出,平方根的值如果是个小数,则会将小数部分舍去,即
Math.floor(x)
,因此我们可以得到:边界场景
代码实现
The text was updated successfully, but these errors were encountered: