題目:實現 int sqrt(int x) 函式。
計算並返回 x 的平方根,其中 x 是非負整數。
由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。
解一:二分法
class
solution
int low =
1, high = x;
int mid = low+
(high-low)/2
;int sqrt = x/mid;
while
(low<=high)
else
if(sqrtelse
}return high;
}}
解二:牛頓迭代法
class
solution
double res =1,
double last =0;
while
(res!=last)
return
(int
)res;
}}
二分法查詢:
//一般的二分法,不要求出現重複值時返回最左的值(最靠前的)
class
solution
else
if(arr[mid]
>key)
else
}return-1
;}}
二分法查詢變種
//當陣列**現重複元素,需要查詢最左元素時。
class
solution
else
}return low;
}}
手工開平方
手工開平方步驟 1.數字小於2 平方根為1 結束 2.數字分段 放入鍊錶 以小數點為原點 向兩邊數 兩兩為一段 小數點給小數點前面一段 如135.235 1,35.23,5 4段 段閒用逗號分隔了 2.乾掉鏈頭當作處理數 3.根據規則運算處理數求出最大試乘數 和餘數 規則如下 積 運算元.repla...
記錄幾個開平方演算法
整數開平方演算法 本演算法只採用移位 加減法 判斷和迴圈實現,因為它不需要浮點運算,也不需要乘除運算,因此可以很方便地運用到各種晶元上去。我們先來看看10進製下是如何手工計算開方的。先看下面兩個算式,x 10 p q 1 公式 1 左右平方之後得 x 2 100 p 2 20pq q 2 2 現在假...
記錄幾個開平方演算法
整數開平方演算法 本演算法只採用移位 加減法 判斷和迴圈實現,因為它不需要浮點運算,也不需要乘除運算,因此可以很方便地運用到各種晶元上去。我們先來看看10進製下是如何手工計算開方的。先看下面兩個算式,x 10 p q 1 公式 1 左右平方之後得 x 2 100 p 2 20pq q 2 2 現在假...