标签: binary-search
, math
难度: Easy
通过率: 39.73%
原题链接: https://leetcode.com/problems/sqrtx/description/
题目描述
给定一个非负整数 x,计算其平方根并返回结果的整数部分。要求不能使用任何内置的指数函数或运算符。
解题思路
我们可以通过二分查找算法来求解这一问题。基本思路是:
- 设定两个指针 left 和 right,初始化为 0 和 x。
- 二分查找:
- 计算中间值 mid=2left+right。
- 如果 mid×mid≤x<(mid+1)×(mid+1) ,那么 mid 就是我们要寻找的平方根的整数部分。
- 如果 mid×mid>x,则调整 right=mid−1。
- 如果 mid×mid<x,则调整 left=mid+1。
- 继续反复上述过程,直到 left 超过 right,此时可能余留下的 right 即是所求的平方根整数部分。
代码实现