21xrx.com
2024-12-23 01:42:06 Monday
登录
文章检索 我的文章 写文章
C++求两数最小距离
2023-07-04 22:22:41 深夜i     --     --
C++ 两数 最小距离

C++是一种面向对象的编程语言,广泛应用于计算机软件的开发。求两数最小距离是一个常见问题,C++具有处理这类问题的强大能力。

在C++中,可以使用vector容器存储一组数据,如下所示:


vector<int> nums = 2;

接下来,需要编写一个函数来求两个数之间的最小距离,代码如下所示:


#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

int minDist(vector<int>& nums, int a, int b) {

  int min_dist = INT_MAX;

  int last_a_index = -1;

  for (int i = 0; i < nums.size(); i++) {

    if (nums[i] == a) {

      if (last_a_index != -1) {

        min_dist = min(min_dist, i - last_a_index);

      }

      last_a_index = i;

    } else if (nums[i] == b) {

      if (last_a_index != -1) {

        min_dist = min(min_dist, i - last_a_index);

      }

    }

  }

  return min_dist;

}

int main() {

  vector<int> nums = 5;

  

  int a = 2, b = 9;

  cout << "The minimum distance between " << a << " and " << b << " is " << minDist(nums, a, b) << endl;

  

  return 0;

}

在上述代码中,minDist函数使用了两个指针,一个指针指向a的位置,另一个指针指向b的位置。然后,使用一个循环遍历数组,更新最小距离并更新两个指针的位置。

此外,还可以使用STL中的find和distance函数来简化代码,实现如下所示:


#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

int minDist(vector<int>& nums, int a, int b) {

  auto it_a = find(nums.begin(), nums.end(), a);

  auto it_b = find(nums.begin(), nums.end(), b);

  return distance(it_a, it_b);

}

int main() {

  vector<int> nums = 7;

  int a = 2, b = 9;

  cout << "The minimum distance between " << a << " and " << b << " is " << minDist(nums, a, b) << endl;

  

  return 0;

}

最后,要注意这个问题的边界情况。如果两个数不在数组中,或者数组中只有一个数,则最小距离为-1。

总之,C++是一种强大的编程语言,可以处理各种问题。求两数最小距离是其中之一,使用vector和STL函数可以简化代码,但要注意边界情况。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复