在这个问题上,我们得到了一个数组arr。我们的任务是创建一个程序来查找最大值K,以使数组中的至少K个元素在C ++中大于等于K。
我们需要找到一个值K,该值满足以下条件:数组中有K个或更多元素大于或等于K。
让我们举个例子来了解这个问题,
输入:arr [] = {3,5,1,7,6,6,4,8}
输出:5
数组中大于或等于5的元素:5、6、6、7、8。
解决该问题的一种简单有效的方法是对数组进行排序,并从最后一个索引开始检查该元素后面的元素数是否大于元素本身。如果是,则返回该元素。
#include <bits/stdc++.h> using namespace std; int CalcMaximumVal(int arr[], int N){ sort(arr, arr + N); for(int i = (N - 1); i >= 0; i--){ if(arr[i] <= (N - i) ) return arr[i]; } } int main(){ int arr[] = {4,7,2,3,8}; int N = sizeof(arr)/sizeof(arr[0]); cout<<"The maximum value K such that array has at-least K elements that are >= K is "<<CalcMaximumVal(arr, N); return 0; }
输出结果
The maximum value K such that array has at-least K elements that are >= K is 3