(Java)leetcode-69 Sqrt(x)

题目

【开平方】
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.

思路

二分查找法

代码

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;//否则继续在右半部分查找
	        }
	    }
	}
}

提交结果

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).

发布了143 篇原创文章 · 获赞 45 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/z714405489/article/details/89512244