LeetCode69求開平方

2021-09-22 12:55:06 字數 869 閱讀 3141

題目:實現 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 現在假...