34. Search for a Range

来源:互联网 发布:数据库references 编辑:程序博客网 时间:2024/05/01 10:05

34. Search for a Range

int findLeft(int *nums,int s,int e,int target){    int i=s,j=e,m=0,idx=-1;    while(i<=j)    {        m=(i+j)/2;        if(nums[m]<target) i=m+1;        else j=m-1;        if(nums[m]==target) idx=m;    }    return idx;}int findRight(int *nums,int s,int e,int target){    int i=s,j=e,m=0,idx=-1;    while(i<=j)    {        m=(i+j)/2;        if(nums[m]>target) j=m-1;        else i=m+1;        if(nums[m]==target) idx=m;    }    return idx;}int* searchRange(int* nums, int numsSize, int target, int* returnSize) {    *returnSize=2;    int *ret=(int *)malloc(2*sizeof(int));    ret[0]=findLeft(nums,0,numsSize-1,target);    ret[1]=findRight(nums,ret[0],numsSize-1,target);    return ret;}
原创粉丝点击