在这个问题中,我们得到了n个元素的数组arr []。我们的任务是按原始顺序查找数组的k个最大元素。
我们需要找到数组的k个最大元素,然后按原始索引进行打印。
让我们举个例子来了解这个问题,
输入: arr [] = {5,1,3,6,2},k = 2
输出: 5、6
解释:
数组中最大的两个元素是6和5。但是在原始数组中,5在6之前。
要解决该问题,并按原始顺序打印k个元素。
为此,我们将创建一个decArray,它将以降序存储arr []的元素。然后,我们将遍历原始数组并使用decArray []按顺序打印k个最大元素。
#include <bits/stdc++.h>
using namespace std;
bool seachVal(int decArr[], int k, int ele){
for(int i = 0; i < k; i++){
if( decArr[i] == ele)
return true;
}
return false;
}
void printKMaxEle(int arr[], int k, int n) {
int decArr[n];
for(int i = 0; i < n ; i++){
decArr[i] = arr[i];
}
sort(decArr, decArr + n, greater<int>());
for (int i = 0; i < n; ++i)
if ( seachVal(decArr, k, arr[i]) )
cout<<arr[i]<<" ";
}
int main() {
int arr[] = { 15, 1, 3, 6, 2, 34, 8, 9 };
int n = sizeof(arr) / sizeof(arr[0]);
int k = 3;
cout<<k<<" maximum elements of the array in their original order are \n";
printKMaxEle(arr, k, n);
return 0;
}输出结果3 maximum elements of the array in their original order are 15 34 9