码迷,mamicode.com
首页 > 编程语言 > 详细

【面试题】-数组A中任意两个相邻元素大小相差1,找出某个数在数组A中的位置。(所有位置 )

时间:2015-05-13 16:46:09      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:面试题

题目描述

数组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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!