实现lower_bound和upper_bound算法
来源:互联网 发布:花椒直播网络不佳 编辑:程序博客网 时间:2024/05/22 12:39
lower_bound算法返回第一个大于等于给定值所在的位置。设置两个指针start和last,其中start指向数组的起始位置,last指向数组末尾位置之后的位置。当start和last指向相同位置时循环结束。mid指向[start,last)区间的中间位置,当中间位置元素值大于等于给定val时,说明第一个大于等于val值在mid位置的左边,更新last为mid。当中间位置元素值小于给定的val时,说明第一个大于等于val值在mid右边,不包括mid所在的位置。更新start为mid+1。
int myLowerBound(vector<int> &data, int k){int start = 0;int last = data.size();while (start < last){int mid = (start + last) / 2;if (data[mid] >= k){last = mid;}else{start = mid + 1;}}return start;}
upper_bound算法返回第一个大于给定元素值所在的位置,设置两个指针start和last,其中start指向数组的起始位置,last指向数组末尾位置之后的位置,当start和last指向相同位置时循环结束,mid指向[start,last)区间的中间位置,当中间位置元素值小于等于给定val时,说明第一个大于val值在mid位置的右边更新start为mid+1。当中间位置元素值大于给定元素时,说明第一大于在mid左边,包括mid所在位置,所以更新last为mid。
int myUpperBound(vector<int> &data, int k){int start = 0;int last = data.size();while (start < last){int mid = (start + last) / 2;if (data[mid] <= k){start = mid + 1;}else{last = mid;}}return start;}
0 0
- 实现lower_bound和upper_bound算法
- lower_bound和upper_bound算法
- lower_bound和upper_bound算法
- STL----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- 【STL源码学习】----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- STL algorithm算法lower_bound和upper_bound(31)
- STL源码学习----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- STL源码学习----lower_bound和upper_bound算法
- 机器学习基础 维基翻译 典则相关分析 多标签分类 及简单的sklearn例子
- leetcode题解日练--2016.7.17
- Java工具类之Date日期操作工具类
- Android二维码生成
- 产品页面聚合方法
- 实现lower_bound和upper_bound算法
- 双重嵌套输出100以内全部素数
- 转行|如何成为企业想要的Android工程师
- Android面试题整理(转载自 简书)
- 蓝牙聊天
- 用virtualbox安装CentOS 7
- POJ 2752 KMP中next数组的应用
- codeforces 234E Champions' League
- MVN相关命令集