實現 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.由於返回型別是整數,小數部分將被捨去...