给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
来源:力扣(LeetCode)
双指针
int
search(int* nums, int numsSize, int target)
{
int left = 0;
int right = numsSize - 1;
for (; left <= right; left ++, right --)
{
if (nums[left] == target)
{
return left;
}
if (nums[right] == target)
{
return right;
}
}
return -1;
}
另
int
search(int* nums, int numsSize, int target)
{
int right = numsSize - 1;
int left = 0;
while (left <= right)
{
int middle = (right + left) /2 ;
if (nums[middle] == target)
{
return middle;
}
if (target > nums[middle])
{
left = middle + 1;
}else if (target < nums[middle])
{
right = middle - 1;
}else{
return middle;
}
}
return -1;
}