704.二分查找

Posted 研究生的倔强

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了704.二分查找相关的知识,希望对你有一定的参考价值。

https://leetcode-cn.com/problems/binary-search/submissions/

// 版本一class Solution {public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; // 定义target在左闭右闭的区间里,[left, right] while (left <= right) { // 当left==right,区间[left, right]依然有效,所以用 <= int middle = left + ((right - left) / 2);// 防止溢出 等同于(left + right)/2 if (nums[middle] > target) { right = middle - 1; // target 在左区间,所以[left, middle - 1] } else if (nums[middle] < target) { left = middle + 1; // target 在右区间,所以[middle + 1, right] } else { // nums[middle] == target return middle; // 数组中找到目标值,直接返回下标 } } // 未找到目标值 return -1; }};
// 版本二class Solution {public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size(); // 定义target在左闭右开的区间里,即:[left, right) while (left < right) { // 因为left == right的时候,在[left, right)是无效的空间,所以使用 < int middle = left + ((right - left) >> 1); if (nums[middle] > target) { right = middle; // target 在左区间,在[left, middle)中 } else if (nums[middle] < target) { left = middle + 1; // target 在右区间,在[middle + 1, right)中 } else { // nums[middle] == target return middle; // 数组中找到目标值,直接返回下标 } } // 未找到目标值 return -1; }};


以上是关于704.二分查找的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Algorithm 704. 二分查找

LeetCode第3天 - 704. 二分查找 | 35. 搜索插入位置

代码随想录算法训练营第一天 | 704. 二分查找27. 移除元素

代码随想录算法训练营第一天 | 704. 二分查找27. 移除元素

704. 二分查找

LeetCode.704 二分查找