标签:面试题
数组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,找出某个数在数组A中的位置。(所有位置 )
标签:面试题
原文地址:http://blog.csdn.net/zwhlxl/article/details/45694549