[アルゴリズムトピックのブレークスルー] 二分探索 - 704. 二分探索 (16)

目次

1. 質問分析

2. アルゴリズム原理

3. コードの書き方

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


1. 質問分析

質問リンク: 704. 二分探索 - LeetCode

質問はとても簡単です。ターゲットを見つけるだけです。 

2. アルゴリズム原理

最も基本的な二分探索アルゴリズムによると、次のようになります。

順序付けされた配列では、左側と右側の境界はそれぞれ left と right であり、mid が指す位置の値は x です。 

1. x < ターゲット、左 = 中央 + 1

2. x > ターゲット、右 = 中央 - 1

3. x == ターゲット。結果を返すだけです。

3. コードの書き方

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0, right = nums.size() - 1;
        while(left <= right) {
            int mid = left + (right - left) / 2;
            if(nums[mid] < target) left = mid + 1;
            else if(nums[mid] > target) right = mid - 1;
            else if(nums[mid] == target) return mid;
        }
        return -1;
    }
};

4. 最初の二等分テンプレート

これは私たちの最初のテンプレートです~

        while (左 <= 右) {

            int ミッド = 左 + (右 - 左) / 2;

            if ( ... ) left = mid + 1;

            else if ( ... ) right = mid - 1;

            else if ( ... ) はmidを返します。

        }

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

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

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

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

おすすめ

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