C++ 中找到数组中至少有 K 个元素大于等于 K 的最大值 K


在这个问题中,我们给定一个数组 arr。我们的任务是创建一个程序,在 C++ 中找到数组中至少有 K 个元素大于等于 K 的最大值 K。

问题描述

我们需要找到一个值 K,满足条件:数组中存在 K 个或更多元素大于或等于 K。

让我们举个例子来理解这个问题:

输入:arr[] = {3, 5, 1, 7, 6, 6, 4, 8}

输出:5

解释

数组中大于或等于 5 的元素:5, 6, 6, 7, 8。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

解决方案

解决此问题的一个简单有效的方法是通过对数组进行排序,并从最后一个索引开始检查元素之后元素的数量是否大于元素本身。如果是,则返回该元素。

示例

 现场演示

#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

更新于: 2020-10-09

238 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告