LeetCode 69 x 的平方根

2022-07-14 17:15:10 字數 2298 閱讀 9030

實現 int sqrt(int x) 函式。

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

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

示例 1:

輸入: 4

輸出: 2

示例 2:

輸入: 8

輸出: 2

說明: 8 的平方根是 2.82842...,

由於返回型別是整數,小數部分將被捨去。

對x折半,然後從1至x/2求平方;

可以ac,但效率低;

演算法複雜度:

略...

演算法複雜度:

從1到x/2開始二分查詢並比較平方;

示例**有兩種寫法一種是迭代一種是遞迴;

演算法複雜度:

\[=x^}=\left(e^\right)^}=e^lnx}}}

\]直接用jdk的math類方法解決;

演算法複雜度:

package leetcode;

/** * @author zhoujie

* @date 2023年3月1日 下午5:11:36

* @description: 69. x 的平方根

* */

public class leetcode_0069

class solution_0069

int k = x / 2;

for (int i = 1; i < k + 1; i++) else if (i * i == x)

} return k;

} /**

* @author: zhoujie

* @date: 2023年3月1日 下午5:33:36

* @param: @param x

* @param: @return

* @return: int

* @description: 2-牛頓法;

* */

public int mysqrt_2(int x)

return (int) y;

} /**

* @author: zhoujie

* @date: 2023年3月1日 下午5:57:44

* @param: @param x

* @param: @return

* @return: int

* @description: 3-二分法;

* */

public int mysqrt_3(int x)

long left = 1, right = x / 2, mid = 1;

while (left <= right) else if (t < x) else

} return (int) right;

} /**

* @author: zhoujie

* @date: 2023年3月1日 下午5:58:56

* @param: @param x

* @param: @return

* @return: int

* @description: 4-位移遞迴,仍為二分查詢;

* */

public int mysqrt_4(int x)

int left = mysqrt_4(x >> 2) << 1;

int right = left + 1;

// 必須先把乙個right轉為long 而不是轉其乘積,乘積可能溢位變為負數

return (long) right * right > x ? left : right;

} /**

* @author: zhoujie

* @date: 2023年5月9日 下午1:21:29

* @param: @param x

* @param: @return

* @return: int

* @description: 5-袖珍計算器,對求根公式的變換;

* */

public int mysqrt_5(int x)

int r = (int) math.exp(0.5 * math.log(x));

return (long) (r + 1) * (r + 1) <= x ? r + 1 : r;

}}

LeetCode 69 x 的平方根

實現int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.由於返回型別是整數,小數部分將被捨去。usr bin p...

Leetcode 69 x 的平方根

實現 int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 複製 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.複製 由於返回型別是整數,小數部分將被捨去。找...

leetcode69x 的平方根

69.x 的平方根 實現int sqrt int x 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842.由於返回型別是整數,小數部分將被捨去...