LeetCode-Sqrt(x) -求整数根号-二分搜索
https://oj.leetcode.com/problems/sqrtx/
二分搜索。需要注意每次改变边界时l=mi-1,r=mi+1,否则会死循环。另外可能会有整数溢出的情况,使用long long即可解决。
class Solution {
public:
int sqrt(int x) {
long long l=0;
long long r=x;
while(r>l){
long long mi=(l+r)/2;
long long mi2=mi*mi;
if(mi2<x) l=mi+1;
else if (mi2>x) r=mi-1;
else {
l=mi;
break;
}
}
if (l*l>x) l--;
return l;
}
};
浙公网安备 33010602011771号