21xrx.com
2024-11-22 02:34:15 Friday
登录
文章检索 我的文章 写文章
如何在c++中去除重复的数字
2023-07-05 06:26:01 深夜i     --     --
C++ 去重 数组 循环 算法

在c++中,为了去除重复的数字,我们可以采用以下两种方法:使用set容器或自建函数。

1. 使用set容器去除重复数字

Set是STL中提供的容器之一,它可以自动去除掉相同元素。因此我们可以使用set容器来存储数字,当数字重复出现时,set容器会自动去重,这样就能实现去除重复数字的效果。代码如下:


#include <iostream>

#include <set>

using namespace std;

int main()

{

  int a[10] = 6;

  set<int> s;

  for(int i=0;i<10;i++)

  {

    s.insert(a[i]); // 将a[i]插入到set中

  }

  for(auto it=s.begin();it!=s.end();it++)

  {

    cout<<*it<<" "; // 输出去重后的数字

  }

  return 0;

}

2. 自建函数去除重复数字

我们也可以自建函数来去除重复数字,具体思路是利用for循环遍历数组,再利用另外一个for循环判断是否存在重复的数字,并将其删除。代码如下:


#include <iostream>

using namespace std;

int main()

{

  int a[10] = 2;

  int n=10;

  for(int i=0;i<n-1;i++)

  {

    for(int j=i+1;j<n;j++) // 判断是否存在重复元素

    {

      if(a[i]==a[j])

      {

        for(int k=j;k<n-1;k++) // 将相同元素后面的元素前移

        {

          a[k]=a[k+1];

        }

        n--; // 将数组元素个数减一

        j--; // 将下标回退一位

      }

    }

  }

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

  {

    cout<<a[i]<<" "; // 输出去重后的元素

  }

  return 0;

}

这样就可以实现去除重复数字的效果了。但需要注意的是,自建函数的时间复杂度较高,使用set容器的效率更高。

  
  

评论区

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