學渣帶你刷Leetcode0069x 的平方根

題目描述

實現 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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章