二分查找中term有重复的情况
2015-11-05 21:08
309 查看
二分查找算法虽然简单,但是遇到待查找的term有重复的时候,也会存在各种小问题。下面给出二分查找中遇到重复term时,第一个可插入位置和最后一个可插入位置的代码。
第一个可插入位置:
1、将片段1中的代码换为:start = mid;
2、将片段2和片段3的代码位置互换。
第一个可插入位置:
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; } } // 片段2 if(array[start] == target) { return start; } // 片段3 if(array[end] == target) { return end; } return -1; } };最后一个可插入位置:
1、将片段1中的代码换为:start = mid;
2、将片段2和片段3的代码位置互换。
相关文章推荐
- C++二分查找在搜索引擎多文档求交的应用分析
- C#二分查找算法实例分析
- 在MySQL中实现二分查找的详细教程
- Java实现二分查找算法实例分析
- Python二分查找详解
- 简介二分查找算法与相关的Python实现示例
- 漫谈递归:二分查找算法的递归实现
- 二分查找
- [LeetCode] Find Minimum in Rotated Sorted Array
- 折半查找法
- "二分查找(Binary Search)"与"斐波那契查找(Fibonacci Search)"
- 二分查找
- C#版二分查找(代碼)
- 4495: Least Prime factor 找到最小质因子P的第N小正整数
- 使用Java完成《算法导论》习题2.3-5
- 使用Java完成《算法导论》习题2.3-6
- 使用Java完成《算法导论》习题2.3-7
- Sort Colors,Search in Rotated Sorted Array I,II,Merge Intervals,Insert Interval,Subsets II
- Find Peak Element,Longest Substring Without Repeating Characters
- Combination Sum I,II,Divide Two Integers