二分查找中term有重复的情况

来源:互联网 发布:mac录屏如何录制声音 编辑:程序博客网 时间:2024/06/08 06:48

二分查找算法虽然简单,但是遇到待查找的term有重复的时候,也会存在各种小问题。下面给出二分查找中遇到重复term时,第一个可插入位置和最后一个可插入位置的代码。

第一个可插入位置:

class Solution {public:    int binarySearch(vector<int> &array, int target) {        if(array.size() == 0) {return -1;}int start = 0;int end = array.size() - 1;int mid;while(start + 1 < end) {mid = start + (end - start) / 2;if(array[mid] == target) {end = mid;// 片段1} else if(array[mid] > target) {end = mid;} else if(array[mid] < target) {start = mid;}}// 片段2if(array[start] == target) {return start;}// 片段3if(array[end] == target) {return end;}        return -1;    }};
最后一个可插入位置:

1、将片段1中的代码换为:start = mid;

2、将片段2和片段3的代码位置互换。

0 0
原创粉丝点击