二分查找
在一个有序无重复元素的数组nums中,寻找一个target,如果找到了就返回对应的下标,如果没有找到就返回-1.
#include#include using namespace std; class Solution { public: int search(vector & 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) >> 1);//防止溢出,等同于(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 { return middle;//在数组中找到目标值,就返回下标 } } return -1;//未找到目标值 } }; int main() { Solution Q; int i; vector a(10); for (i = 0; i < 10; i++) { cin >> a[i]; } int target; cin >> target; cout<



