題目描述
實現 int sqrt(int x) 函數。
計算並返回 x 的平方根,其中 x 是非負整數。
由於返回類型是整數,結果只保留整數的部分,小數部分將被捨去。
示例 1:
輸入: 4
輸出: 2
示例 2:
輸入: 8
輸出: 2
說明: 8 的平方根是 2.82842...,
由於返回類型是整數,小數部分將被捨去。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/sqrtx
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
白話題目:
算法:
詳細解釋關注 B站 【C語言全代碼】學渣帶你刷Leetcode 不走丟 https://www.bilibili.com/video/BV1C7411y7gB
C語言完全代碼
//方法一:二分法查找
int mySqrt(int x){
int iLeft = 1;
int iRight = x / 2; //x的平方根不會大於 x/2
int iTmp = 0;
if (0 == x) return 0;
if (1 == x) return 1;
while (iLeft < iRight)
{
iTmp = (iLeft + iRight + 1) / 2;
if (iTmp == x / iTmp)
{
iLeft = iTmp;
break;
}
else if (iTmp < x / iTmp)
{
iLeft = iTmp;
}
else
{
iRight = iTmp - 1;
}
}
return iLeft;
}