【发布时间】:2021-11-30 06:34:21
【问题描述】:
给定一个按升序排序的整数数组和一个整数目标,编写一个函数在数组中搜索目标。如果目标存在,则返回其索引。否则,返回 -1。
您必须编写一个运行时复杂度为 O(log n) 的算法。
我使用以下代码解决了上述问题:
int search(int* nums, int numsSize, int target){
int l = 0;
int r = numsSize -1;
int result = -1;
while(l <= r)
{
int mid = (l + (r-l))/2;
if(nums[mid] == target)
return result = nums[mid];
if(nums[mid] < target)
return l = mid + 1;
else
return r = mid - 1;
}
return result;
}
但我仍然没有得到正确的答案。请帮忙。
【问题讨论】:
-
在什么情况下你会得到错误的答案?您正在搜索的数组是什么?目标值是多少?你期待什么结果,你得到什么结果?
-
如果数组中只有 1 个元素 (
l == r),即使该元素与目标匹配,您也会自动返回-1。 -
@500-InternalServerError 返回的值应该是
mid,正如下面 Corina 的回答中所指出的那样。