检查数组中的重复元素

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将学习如何使用 C++ 编程语言判断给定的数组是否包含重复元素。我们将通过排序数组,然后比较相邻元素是否相等来实现这一目标。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("`C++`")) -.-> cpp/BasicsGroup(["`Basics`"]) cpp(("`C++`")) -.-> cpp/ControlFlowGroup(["`Control Flow`"]) cpp(("`C++`")) -.-> cpp/IOandFileHandlingGroup(["`I/O and File Handling`"]) cpp(("`C++`")) -.-> cpp/SyntaxandStyleGroup(["`Syntax and Style`"]) cpp/BasicsGroup -.-> cpp/arrays("`Arrays`") cpp/ControlFlowGroup -.-> cpp/conditions("`Conditions`") cpp/ControlFlowGroup -.-> cpp/for_loop("`For Loop`") cpp/IOandFileHandlingGroup -.-> cpp/output("`Output`") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("`Code Formatting`") subgraph Lab Skills cpp/arrays -.-> lab-96122{{"`检查数组中的重复元素`"}} cpp/conditions -.-> lab-96122{{"`检查数组中的重复元素`"}} cpp/for_loop -.-> lab-96122{{"`检查数组中的重复元素`"}} cpp/output -.-> lab-96122{{"`检查数组中的重复元素`"}} cpp/code_formatting -.-> lab-96122{{"`检查数组中的重复元素`"}} end

编写库函数和主函数

按照以下内容编写库函数和主函数。

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

bool containsDuplicate(int n[], int m)
{
    // 创建一个标志位来指示是否存在重复元素
    int f = 0;

    // 对输入数组进行排序以检查重复元素
    sort(n, n + m);

    for (int i = 0; i < m - 1; i++)
    {
        if (n[i] == n[i + 1])
        {
            // 如果发现重复元素,将标志位设置为 1 并退出循环
            f = 1;
            break;
        }
    }

    if (f == 1) {
        // 发现重复元素
        return true;
    }
    else {
        // 未发现重复元素
        return false;
    }
}

int main()
{
    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << " ===== 检查输入数组中是否存在重复元素的程序 ===== \n\n";

    int i, n1, n2;

    int a1[] = {2, 3, 1, 4, 5, 2, 8, 9};
    int a2[] = {2, 3, 1, 4, 5, 10, 8, 9};

    bool duplicate1 = false;
    bool duplicate2 = false;

    // 获取两个输入数组的大小
    n1 = sizeof(a1) / sizeof(a1[0]);
    n2 = sizeof(a2) / sizeof(a2[0]);

    // 打印第一个输入数组
    cout << "\n\n第一个输入数组的元素为:\n\n";

    for (i = 0; i < n1; i++)
    {
        cout << a1[i] << "  ";
    }

    // 检查第一个输入数组是否包含重复元素
    duplicate1 = containsDuplicate(a1, n1);

    if (duplicate1) {
        cout << "\n\n第一个输入数组包含重复元素";
    }
    else {
        cout << "\n\n第一个输入数组不包含重复元素";
    }

    // 打印第二个输入数组
    cout << "\n\n\n\n第二个输入数组的元素为:\n\n";

    for (i = 0; i < n2; i++)
    {
        cout << a2[i] << "  ";
    }

    // 检查第二个输入数组是否包含重复元素
    duplicate2 = containsDuplicate(a2, n2);

    if (duplicate2) {
        cout << "\n\n第二个输入数组包含重复元素";
    }
    else {
        cout << "\n\n第二个输入数组不包含重复元素";
    }

    cout << "\n\n\n";

    return 0;
}

运行代码

将代码保存到 ~/project/main.cpp 文件中,并使用以下命令编译代码:

g++ main.cpp -o main && ./main

理解代码

为了检查数组中是否存在重复元素,我们首先创建了一个名为 containsDuplicate() 的函数。该函数接受两个参数——输入数组 n[] 和其大小 m
该函数通过标志位 1 表示发现重复元素,否则标志位为 0。为了查找重复元素,首先使用系统定义的 sort() 函数对输入数组 n[] 进行排序。然后,比较排序后数组中的相邻元素,如果发现重复元素,则设置标志位。
在主函数中,创建了两个测试数组 a1a2,每个数组都可能包含重复元素。通过 containsDuplicate() 函数,我们检查每个数组是否存在重复元素,并输出结果。

if (duplicate1) {
    cout << "\n\nThe first input array contains duplicate";
}
else {
    cout << "\n\nThe first input array does not contain any duplicate";
}

此输出将指示输入数组是否包含重复元素。

总结

使用 C++ 编程可以轻松判断数组中的重复元素。通过对输入数组进行排序并比较相邻元素,可以开发一个高效的标志系统来指示重复值。

您可能感兴趣的其他 C++ 教程