b******y 发帖数: 126 | 1 find out all the elements in a sorted integer array whose value is equal to
index of the array.
O(logn) solution is expected. | p********7 发帖数: 549 | 2 这个是查是否有的代码,如果有很多,代码需要改下,就是返回第一个符合要求,和最后一个符合要求的index
bool search(int* input,int start, int end)
{
if(start>end)
return false;
int index = (start+end)/2;
if(input[index]>index)
return(search(input,start,index-1));
if(input[index]
return(search(input,index+1,end));
else
return true;
}
修改的代码就多很多了,searchend 和searchstart类似,就不写了
int searchstart(int* input,int start,int end)
{
if(start>end)
return -1;
int index = (start+end)/2;
if(input[index]
return(searchstart(i | K******g 发帖数: 1870 | 3 这个不对
-1 1 1 5 5 6 6 7 7 8 10
第一次, a[5]=6 > 5, search左边
第二次, a[2]=1 < 2, search右边: a[3]=a[4]=5
结果没有找到一个
很显然,有很多数符合条件
最后一个符合要求的index
【在 p********7 的大作中提到】 : 这个是查是否有的代码,如果有很多,代码需要改下,就是返回第一个符合要求,和最后一个符合要求的index : bool search(int* input,int start, int end) : { : if(start>end) : return false; : int index = (start+end)/2; : if(input[index]>index) : return(search(input,start,index-1)); : if(input[index]: return(search(input,index+1,end));
| h**6 发帖数: 4160 | 4 只适合所有元素都不相同的情况。如果有重复元素,这题无解吧。 | l******c 发帖数: 2555 | 5 binary search or no answer
to
【在 b******y 的大作中提到】 : find out all the elements in a sorted integer array whose value is equal to : index of the array. : O(logn) solution is expected.
|
|