69.x的平方根

養生護髮發表於2020-09-24
  1. x 的平方根

實現 int sqrt(int x) 函式。
計算並返回 x 的平方根,其中 x 是非負整數。
由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。

示例 1:
輸入: 4
輸出: 2

示例 2:
輸入: 8
輸出: 2
(說明: 8 的平方根是 2.82842…, 由於返回型別是整數,小數部分將被捨去。)

方法:二分查詢法
由於 x 平方根的整數部分 ans 是滿足 k^2 ≤x 的最大 k值,因此我們可以對 k進行二分查詢,從而得到答案。
二分查詢的下界為 0,上界可以粗略地設定為 x。在二分查詢的每一步中,我們只需要比較中間元素 mid 的平方與 x 的大小關係,並通過比較的結果調整上下界的範圍。由於我們所有的運算都是整數運算,不會存在誤差,因此在得到最終的答案 ans 後,也就不需要再去嘗試 ans+1了。

class Solution {    
public int mySqrt(int x) 
{        
	int left = 0, right = x, ans = 0;        
	while (left <= right) 
	{            
		int mid = left + (right - left) / 2;            
		if ((long) mid * mid <= x)             
		{                
			ans = mid;                
			left = mid + 1;            
		}             
		else             
		{                
			right = mid - 1;            
		}        
	}        
	return ans;    
	}
	}

相關文章