最大值K,以使数组具有至少K个元素,这些元素在C ++中> = K
在这个问题上,我们得到了一个数组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 >= Kis 3
以上是 最大值K,以使数组具有至少K个元素,这些元素在C ++中> = K 的全部内容, 来源链接: utcz.com/z/322449.html