C++程序 已排序数组中最后一个重复元素

C++程序 已排序数组中最后一个重复元素

在使用数组时,我们经常需要判断数组中是否存在重复元素。在排序后的数组中,我们可以通过遍历数组来找到最后一个重复元素。下面是一个通过 C++ 语言实现的示例代码。

#include <iostream>
using namespace std;

int findLastDuplicate(int arr[], int n) {
    int i = 0, j = 1;
    while (j < n) {
        if (arr[i] != arr[j]) {
            i++;
            j++;
        } else {
            while (arr[j] == arr[i]) {
                j++;
            }
            i = j - 1;
        }
    }
    return arr[i];
}

int main() {
    int arr[] = {1, 2, 3, 3, 4, 4, 4, 5, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    int lastDuplicate = findLastDuplicate(arr, n);
    cout << "The last duplicate element in the array is " << lastDuplicate << endl;
    return 0;
}

代码说明

这是一个求已排序数组中最后一个重复元素的 C++ 程序。这个程序中,我们通过 findLastDuplicate 函数实现了对已排序数组的遍历,通过变量 ij 分别记录本次重复元素的起始索引和下一个待比较的元素的索引。首先比较 arr[i]arr[j] 两个元素是否相等,如果不相等则继续比较下一个元素。如果相等,则进入一个循环,这个循环主要是跳过连续的相等元素,在找到下一个不等于 arr[i] 的元素之后,我们将 i 赋值为 j - 1,这样就为下一次比较做好了准备。

在主函数中,我们调用了 findLastDuplicate 函数并将数组和数组长度作为参数传递,最后输出了结果。在这里我们定义数组 arr,并将含有重复元素的序列按升序排列。

结论

此外我们还需要注意的是,该算法中的循环结构中,两个变量 ij 分别要指向相邻的元素,这样才能够顺利地进行对冲比较。如果指向的元素不相邻,则必然会出现错误的比较结果。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例