目次
1. 質問分析
質問リンク: 69. x の平方根 - LeetCode
この問題は算術の平方根を求める問題です。
注意すべき点は、整数部分のみを保持する必要があり、小数部分は破棄されるということです。
2. アルゴリズム原理
間隔 1 ~ x を決定しました。数値 x の算術平方根はその範囲内になければなりません。
最も単純なアイデアは、総当たりのソリューションを使用して、それぞれを調べてそれらを見つけることです。
実際、このような順序付けされた配列では、二分探索を使用してコードを最適化できます。
毎回中間点を取ります
現在 Mid * Mid <= x,让 left = Mid
Mid * Mid > x の場合、right = Mid - 1 とします。
3. コードの書き方
class Solution {
public:
int mySqrt(int x) {
if(x == 0) return 0;
int left = 1, right = x;
while(left < right) {
long mid = left + (right - left + 1) / 2;
if(mid * mid <= x) left = mid;
else right = mid - 1;
}
return right;
}
};
最後に次のように書きます。
以上がこの記事の内容です、読んでいただきありがとうございます。
何かを得たと感じたら、ブロガーに「いいね! 」を与えることができます。
記事の内容に漏れや間違いがある場合は、ブロガーにプライベートメッセージを送信するか、コメント欄で指摘してください〜