1. 程式人生 > >【leetcode-69】 x 的平方根

【leetcode-69】 x 的平方根

lse 平方根 結果 大於 class i++ 輸入 其中 由於

(主要是越界問題)

實現 int sqrt(int x) 函數。

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

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

示例 1:

輸入: 4
輸出: 2

示例 2:

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

    public int mySqrt(int x) {
        if (x==1) {
            return 1;
        }
        for (int i=0;i<=x/2;i++) {
            
if (i*i == x) { return i; } else if (i*i<x && (i+1)*(i+1)>x) { return i; } } return 1; }
輸入
2147483647
輸出
1
預期結果
46340

錯誤原因是數組越界,int最大開根號也就46340.9,從0~46340之間找到n,n的平方小於x,n+1的平方大於x,就好

改成下面這樣

    public
int mySqrt(int x) { if (x==1) { return 1; } for (int i=0;i<=x/2;i++) { if ((long)i*(long)i == x) { return i; } else if ((long)i*(long)i<x && (long)(i+1)*(long)(i+1)>x) { return i; } }
return 1; }
成功
執行用時 : 51 ms, 在Sqrt(x)的Java提交中擊敗了20.67% 的用戶
內存消耗 : 32.8 MB, 在Sqrt(x)的Java提交中擊敗了31.49% 的用戶

【leetcode-69】 x 的平方根