classSolution{publicintmySqrt(int x){if(x <2)return x;long num;int pivot, left =2, right = x /2;while(left <= right){
pivot = left +(right - left)/2;
num =(long)pivot * pivot;if(num > x) right = pivot -1;elseif(num < x) left = pivot +1;elsereturn pivot;}return right;}}
作者:LeetCode
链接:https://leetcode-cn.com/problems/sqrtx/solution/x-de-ping-fang-gen-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
思路四:没想到这道题还有这么多想法。可以利用递归。
classSolution{publicintmySqrt(int x){if(x <2)return x;int left =mySqrt(x >>2)<<1;int right = left +1;return(long)right * right > x ? left : right;}}
作者:LeetCode
链接:https://leetcode-cn.com/problems/sqrtx/solution/x-de-ping-fang-gen-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。