【leetcode-69】 x 的平方根
阿新 • • 發佈:2019-04-03
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,就好
改成下面這樣
publicint 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 的平方根