目次
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を返します。
}
最後に次のように書きます。
以上がこの記事の内容です、読んでいただきありがとうございます。
何かを得たと感じたら、ブロガーに「いいね! 」を与えることができます。
記事の内容に漏れや間違いがある場合は、ブロガーにプライベートメッセージを送信するか、コメント欄で指摘してください〜