问题描述:一个数组,有重复元素,范围不限,找出所给两个数在数组中的最短距离
注意开始的判断,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;
}
本文介绍了一种算法,用于查找数组中两个指定数值之间的最短距离。该算法适用于包含重复元素的数组,并考虑了特殊情况,如目标数值相同或不存在的情况。
1072

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



