【问题标题】:How can i remove the duplicate element in output / arrays?如何删除输出/数组中的重复元素?
【发布时间】:2023-01-17 18:29:40
【问题描述】:
#include <iostream>
using namespace std;

int main()
{
    const int ARRAY_SIZE = 10;
    int value[ARRAY_SIZE] = { 1, 2, 3, 4, 3, 4, 2, 3, 5, 6};
    int value2[100];
    for (int i = 0; i < ARRAY_SIZE; i++) 
    {
        for (int j = i + 1; j <= ARRAY_SIZE; j++)
        {
            if (value[i] == value[j]) 
            {
                cout << value[i] << " ";
            }
        }
    }
    return 0;
}

输出是

2 3 3 4 3

如何使输出成为 2 3 4

我想我应该再创建一个数组来存储值,但我坚持了下来,不知道该怎么做。

【问题讨论】:

  • for (int j = i + 1; j &lt;= ARRAY_SIZE; j++)您将在此处访问value[ARRAY_SIZE]value[j],它在数组之外。你会得到未定义的行为。首先开始解决这个问题。
  • 请确定:您是否尝试打印在value 数组中出现不止一次的所有数字?请edit并澄清。
  • 一种可能的方法: 1. 将所有值存储在value2 而不是打印它们。 2. 现在再写一段代码,只打印一次value2的所有值;该算法类似于您已经编写的内容。

标签: c++ arrays


【解决方案1】:

您可以使用 std::map 来计算一个值在数组中出现的次数。如果数字出现 2 次或更多次,则打印它。

#include <iostream>
#include <map>

int main()
{
    const int ARRAY_SIZE = 10;
    int value[ARRAY_SIZE] = { 1, 2, 3, 4, 3, 4, 2, 3, 5, 6};
    std::map <int, int> mp;
    for(int i : value) 
        ++mp[i];
    for(const auto& p : mp) 
        if(p.second > 1)
            std::cout << p.first << ' ';
}

Link

【讨论】:

    猜你喜欢
    • 2018-07-20
    • 1970-01-01
    • 2018-02-14
    • 2017-08-12
    • 2011-03-22
    • 2014-01-18
    • 2013-05-20
    相关资源
    最近更新 更多