Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

배열에 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.

솔루션 접근 방식

이 문제에 대한 간단하고 효과적인 해결책은 배열을 정렬하고 마지막 인덱스에서 요소 뒤의 요소 수가 요소 자체보다 큰지 확인하는 것입니다. 그렇다면 요소를 반환하십시오.

예시

#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