首页 > 代码库 > [LeetCode] Search for a Range(二分法)
[LeetCode] Search for a Range(二分法)
Given a sorted array of integers, find the starting and ending position of a given target value.
Your algorithm‘s runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1]
.
For example, Given [5, 7, 7, 8, 8, 10]
and target value 8, return [3, 4]
.
class Solution {public: vector<int> searchRange(int A[], int n, int target) { set<int> sIndex; search(A,0,n-1,target,sIndex); vector<int> result(2,-1); if(!sIndex.empty()){ result[0] = *sIndex.begin(); result[1] = *(--sIndex.end()); } return result; }private: void search(int A[],int start,int end,int target,set<int> &sIndex){ if(start == end){ if(A[start]==target){ sIndex.insert(start); return; }else return; } int startIndex,endIndex; int mid = start + (end-start)/2; if(A[start]<=target && A[mid]>= target) search(A,start,mid,target,sIndex); if(A[mid+1]<=target && A[end]>= target) search(A,mid+1,end,target,sIndex); }//end func};
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。