[アルゴリズムトピックのブレークスルー] 二分探索 - x の平方根 (18)

目次

1. 質問分析

2. アルゴリズム原理

3. コードの書き方

最後に次のように書きます。


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;
    }
};

最後に次のように書きます。

以上がこの記事の内容です、読んでいただきありがとうございます。

何かを得たと感じたら、ブロガーに「いいね! 」を与えることができます。

記事の内容に漏れや間違いがある場合は、ブロガーにプライベートメッセージを送信するか、コメント欄で指摘してください〜

おすすめ

転載: blog.csdn.net/Locky136/article/details/131863776