题目描述
数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置。
解题思路
对于目标t,由当前位置a[index]比较开始,下一个可能位置为index = abs(t-a[index]),因为要找出所有的位置,所以找出第一个下标位置之后,再从这个下标的下一个开始重新查找。
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int find_num(int a[],int n, int number)
{
int index;
int i = 0;
index = abs(number - a[0]);
if(n < 0)
return -1;
while(index < n)
{
if(a[index] == number)
{
printf("%d ",index);
index += abs(number - a[index + 1]);
continue;
}
else
index += abs(number - a[index]);
}
return -1;
}
int main(int argc, char const *argv[])
{
int a[] = {4,5,6,5,6,7,8,9,10,9};
int n = sizeof(a)/sizeof(a[0]);
find_num(a,n,5);
return 0;
}
这道面试题要求在数组A中,每个相邻元素相差1的情况下,找到目标整数t的所有位置。解题思路是从当前元素开始,根据目标值与当前值的差值寻找下一个可能的位置,并继续搜索。

被折叠的 条评论
为什么被折叠?



