最大值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 >= K

is 3

以上是 最大值K,以使数组具有至少K个元素,这些元素在C ++中> = K 的全部内容, 来源链接: utcz.com/z/322449.html

回到顶部