在C ++中找到两个数字之间的最小距离

假设我们有一个未排序的数组A,以及两个数字x和y。我们必须找到A中x和y之间的最小距离。该数组还可以包含重复元素。因此,如果数组为A = [2、5、3、5、4、4、2、3],x = 3和y = 2,则3与2之间的最小距离仅为1。

为了解决这个问题,我们必须遵循以下步骤,

  • 从左到右遍历数组,如果找到x或y,则停止。然后将该位置的索引存储到上一个

  • 现在,在索引prev之后遍历数组,如果当前索引为i的元素与x或y匹配,则检查它是否与A [prev]不同,如果不同,则在需要时更新min索引,如果那个是不同的,然后将prev更新为prev:= i

示例

#include<iostream>

using namespace std;

int findMinDistance(int A[], int n, int x, int y) {

   int i = 0;

   int distance = INT_MAX;

   int prev_index;

   for (i = 0; i < n; i++) {

      if (A[i] == x || A[i] == y) {

         prev_index = i;

         break;

      }

   }

   while (i < n) {

      if (A[i] == x || A[i] == y) {

         if ( A[prev_index] != A[i] && (i - prev_index) < distance ){

            distance = i - prev_index;

            prev_index = i;

         } else

            prev_index = i;

      }

      i++;

   }

   return distance;

}

int main() {

   int arr[] = {2, 5, 3, 5, 4, 4, 2, 3};

   int n = sizeof(arr) / sizeof(arr[0]);

   int x = 3;

   int y = 2;

   cout << "Minimum distance between " << x << " and " << y << " is: "<< findMinDistance(arr, n, x, y);

}

输出结果

Minimum distance between 3 and 2 is: 1

以上是 在C ++中找到两个数字之间的最小距离 的全部内容, 来源链接: utcz.com/z/316552.html

回到顶部