网站用开源cms/今日刚刚发生的新闻
- 需要引用头文件
#include <algorithm>
-
lower_bound
采用二分查找在一个有序序列 [i,j) 中,返回第一个 >= 目标值的元素的迭代器 it -
upper_bound
采用二分查找在一个有序序列 [i,j) 中,返回第一个 > 目标值的元素的迭代器 it -
使用示例
vector<int> nums = {0,0,0,1,3,4};//nums中第一个大于2的元素的下标int res = lower_bound(nums.begin(),nums.end(),2)-nums.begin();
- 二分查找实现
//nums中第一个大于等于target的元素的下标
int searchInsert(vector<int>& nums, int target) {int left = 0;int right = nums.size()-1;while(left <= right){int mid = left + (right-left)/2;if( nums[mid] > target ){resault = mid;//找到比target 大的元素了right = mid-1;//继续找看有没更小的}else if( nums[mid] < target ){left = mid +1;}else{resault = mid;//找到等于target 的元素了right = mid-1;//继续找看有没重复的}}return resault;}