一个数组,含有重复元素,给出两个数num1和num2,求这两个数字在数组中出现的位置的最小距离
O(n)时间复杂度,O(1)空间复杂度
int minDistance(int A[], int size, int num1, int num2)
{
int num1_last_pos = -1;
int num2_last_pos = -1;
int min_dist = INT_MAX;
for(int i = 0; i < size; ++i)
{
if(A[i] == num1)
{
num1_last_pos = i;
if(num2_last_pos >= 0)
min_dist = min(min_dist, num1_last_pos-num2_last_pos);
}
if(A[i] == num2)
{
num2_last_pos = i;
if(num1_last_pos >= 0)
min_dist = min(min_dist, num2_last_pos-num1_last_pos);
}
}
return min_dist;
}

本文介绍了一种算法,可在O(n)的时间复杂度和O(1)的空间复杂度下找到数组中两个指定数值位置之间的最小距离。通过记录两个数最近出现的位置并计算它们之间的距离来实现。
1423

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



