Leetcode刷題指南-x 的平方根69

1)題目

搜索插入位置

要求:

實現 int sqrt(int x) 函數。

計算並返回 x 的平方根,其中 x 是非負整數。

由於返回類型是整數,結果只保留整數的部分,小數部分將被捨去。

樣例:

示例 1:

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

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

2)思路

二分法 找mid,計算mid的平方與x的大小,然後判斷,不斷縮小範圍,若沒找到正好的mid(mid*mid=x),則返回小的數

3)代碼

二分查找:

class Solution {
public:
    int mySqrt(int x) 
    {
        long long i=0;
        long long j=x/2+1;
        while(i<=j)
        {
            long long mid=(i+j)/2;
            long long res=mid*mid;
            if(res==x)
            {
                return mid;
            }
            if(res<x)
            {
                i=mid+1;
            }else
            {
                j=mid-1;
            }
        }
        return j;//return j 意思是while循環沒有找到mid,此時i>j,取小的
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章