标签:ant leetcode lse tee etc integer 二分法 average compute
Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to be a non-negative integer. Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned. Example 1: Input: 4 Output: 2 Example 2: Input: 8 Output: 2 Explanation: The square root of 8 is 2.82842..., and since the decimal part is truncated, 2 is returned.
思路:用二分法来做,average时间复杂度 O(logn)
class Solution { public int mySqrt(int x) { if (x<2) return x; int l = 0; int h = x; int res = 0; while (l <= h) { int m = l + (h-l)/2; if (m <= x/m && (m+1) > x/(m+1)){ return m; } if (m > x/m) { h = m-1; } else if (m < x/m) { res = m; l = m+1; } } return res; } }
标签:ant leetcode lse tee etc integer 二分法 average compute
原文地址:https://www.cnblogs.com/incrediblechangshuo/p/11634893.html