题目描述
数组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;
}
时间: 2024-10-18 11:12:37