(Java)leetcode-69 Sqrt(x)

topic

[Square root]
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.

Thinking

Binary search

Code

class Solution{
	public int mySqrt(int x) {
	    if (x == 0)
	        return 0;
	    int left = 1, right = Integer.MAX_VALUE;
	    while (true) {
	        int mid = left + (right - left)/2;
	        if (mid > x/mid) //mid^2 > x
	        {
	            right = mid - 1;//在左半部分查找
	        } 
	        else { //mid^2 <= x
	            if (mid + 1 > x/(mid + 1))//符合要求
	                return mid;
	            left = mid + 1;//否则继续在右半部分查找
	        }
	    }
	}
}

Present the results

Runtime: 2 ms, faster than 74.64% of Java online submissions for Sqrt(x).
Memory Usage: 32.4 MB, less than 100.00% of Java online submissions for Sqrt(x).

Published 143 original articles · won praise 45 · views 70000 +

Guess you like

Origin blog.csdn.net/z714405489/article/details/89512244