C++程序 查找具有不同元素的数组中的第三个最大元素

C++程序 查找具有不同元素的数组中的第三个最大元素

C++编程中,查找具有不同元素的数组中第三个最大元素是一个常见的问题。考虑以下情况,这将帮助我们更好地了解这个问题:

假设有一个包含不同元素的数组,它的元素如下所示:

int arr[] = {10, 20, 30, 50, 70, 80, 90};

该数组中的第三个最大元素将是“50”。让我们来看看如何使用C ++编程来解决这个问题。

计算一个具有不同元素的数组中的第三个最大元素

下面是使用C ++编程计算一个具有不同元素的数组中第三个最大元素的示例代码:

#include <bits/stdc++.h>

using namespace std;

int thirdMax(int arr[], int n) {
    set<int> s;

    for(int i = 0; i < n; i++) {
        s.insert(arr[i]);
    }

    if(s.size() < 3) {
        return *s.rbegin();
    }

    set<int>::iterator itr = s.end();
    itr--;
    itr--;
    itr--;

    return (*itr);
}

int main() {
    int arr[] = {10, 20, 30, 50, 70, 80, 90};
    int n = sizeof(arr) / sizeof(arr[0]);

    cout << "Third largest element is " << thirdMax(arr, n) << endl;

    return 0;
}

在上述代码中,我们首先使用set数据结构存储给定数组中的所有不同元素。然后,我们判断set大小是否小于3,如果是,则返回最大元素,否则返回第三大元素。

解释

set

set是C ++ STL标头文件中包含的数据结构之一。 set是一个排序的容器,其中包含不带重复元素的元素。可以使用该数据结构有效地解决找数组中第三个最大元素的问题。

set::insert()

set::insert()函数用于将给定元素插入set容器中。 insert()函数具有以下三种形式:

  1. iterator insert(iterator itr, const value_type& val)
  2. void insert(InputIterator first, InputIterator last)
  3. void insert(initializer_list il)

在上一节的示例代码中,我们使用了第二种形式的insert()。

    for(int i = 0; i < n; i++) {
        s.insert(arr[i]);
    }

set::irerator

set::iterator是一个指针,用于遍历set数据结构中的元素。仔细查看以下代码:

set<int>::iterator itr = s.end();
itr--;
itr--;
itr--;

我们首先将itr指向set中的最后一个元素。然后,我们将itr指针向前移动3个元素,以指向第三个最大元素。

指针解析运算符

指针解析运算符“*”用于获取指针所指向的值。在上一节的示例代码中,我们将指针解析运算符用于返回第三个最大元素:

return (*itr);

结论

使用C ++编程,可以很容易地找到具有不同元素的数组中的第三个最大元素。在本文中,我们介绍了有关set数据结构和指针的基本知识。有任何问题或疑问,请随时在评论栏中发表。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例