问题描述:一个数组,有重复元素,范围不限,找出所给两个数在数组中的最短距离
注意开始的判断,a和b相等的情况下直接返回0,还有最后如果其中两个数有一个没有,返回错误信息
int minDistance(int *array, int len, int a, int b)
{
if (array == null || len == 0||a==b)
return 0;
int A_pos = -1;
int B_pos = -1;
int minDist = len;
for (int i=0; i<len; i++)
{
if (array[i] == a)
{
if (B_pos != -1)
{
minDist = min(i-B_pos, minDist);
}
A_pos = i;
}
if (array[i] == b)
{
if (A_pos != -1)
{
minDist = min(i-A_pos, minDist);
}
B_pos = i;
}
}
if(A_pos == -1|| B_pos == -1)
return -1;
return minDist;
}