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()函数具有以下三种形式:
- iterator insert(iterator itr, const value_type& val)
- void insert(InputIterator first, InputIterator last)
- 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数据结构和指针的基本知识。有任何问题或疑问,请随时在评论栏中发表。