int BinarySearch(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)return mid;
if (nums[mid] > target)right = mid - 1;
else left = mid + 1;
}
return -1;
}
第二类:查找第一个不小于目标值的数,可变形为查找最后一个小于目标值的数
int BinarySearch(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 right = mid - 1;
}
return left;
}
第三类: 查找第一个大于目标值的数,可变形为查找最后一个不大于目标值的数
int BinarySearch(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 right = mid - 1;
}
return left;
}
第一类: 需查找和目标值完全相等的数int BinarySearch(vector&amp;amp;amp;amp;lt;int&amp;amp;amp;amp;gt; nums,int target) { int left = 0, right = nums.size() - 1; while (left &amp;amp;amp;amp;lt; right) { int mid = left + (right - left) / 2;