21xrx.com
2024-12-27 00:09:33 Friday
登录
文章检索 我的文章 写文章
C++ 实现删除数组中重复的数字
2023-07-11 05:18:33 深夜i     --     --
C++ 数组 删除 重复数字

C++ 是一种强大的编程语言,在程序员的世界中被广泛使用。在日常开发中,数组是一种不可避免的数据类型。然而,在处理数组时,有时会遇到重复元素的问题。在这种情况下,最好的解决方法是删除这些重复的数字。接下来,我们将介绍使用 C++ 实现删除数组中重复数字的方法。

首先,我们需要定义一个数组,假设它叫做“arr”。我们需要遍历这个数组,从第一个元素开始,检查是否有重复的数字出现。如果有,我们需要将该数字从数组中删除。我们可以使用一个循环来实现这一点:


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

  for (int j = i + 1; j < n; j++) {

    if (arr[i] == arr[j]) {

      // 重复元素出现

      for (int k = j; k < n; k++) {

        arr[k] = arr[k + 1];

      }

      n--; // 数组大小减1

      j--; // j需要回退一位

    }

  }

}

这个循环嵌套了三个部分。在最外层的 for 循环中,我们遍历整个数组。在第二个 for 循环中,我们比较每个元素和它后面的所有元素是否相等。如果相等,我们就需要将当前元素之后的元素都往前移动一个位置,来覆盖重复的元素。最后,我们将数组的大小减小一个。因为我们删除了一个元素,所以数组大小也相应地减小了一个。

值得注意的是,我们需要使用一个额外的变量 j 来跟踪我们当前的位置。因为我们删除了重复的元素,如果我们不回退 j,下次循环中它会指向一个无效的位置。

最后,我们可以打印出剩余的元素,来验证我们的程序是否正常工作:


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

  cout << arr[i] << " ";

}

cout << endl;

完整的代码可以像这样:


#include <iostream>

using namespace std;

int main() {

  int arr[] = 5;

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

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

    for (int j = i + 1; j < n; j++) {

      if (arr[i] == arr[j]) {

        for (int k = j; k < n; k++) {

          arr[k] = arr[k + 1];

        }

        n--;

        j--;

      }

    }

  }

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

    cout << arr[i] << " ";

  }

  cout << endl;

  return 0;

}

在这个例子中,我们的数组中有许多重复元素。但是,当我们运行代码时,我们会发现只有唯一的元素留了下来。这表明我们的程序成功地删除了我们数组中的重复元素。

总而言之,使用 C++ 实现删除数组中重复数字的方法并不难。我们只需要将每个元素与其后面的元素比较是否相等,如果相等就将后面的元素往前移动。当我们处理完整个数组时,我们就得到了一个没有重复元素的新数组。

  
  

评论区

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