Computer >> Máy Tính >  >> Lập trình >> C ++

Giá trị lớn nhất K sao cho mảng có ít nhất K phần tử> =K trong C ++

Trong bài toán này, chúng ta được cung cấp một mảng arr. Nhiệm vụ của chúng ta là tạo một chương trình để tìm ra Giá trị lớn nhất K sao cho mảng có ít nhất K phần tử> =K trong C ++.

Mô tả vấn đề

Chúng ta cần tìm một giá trị K thỏa mãn điều kiện có K hoặc nhiều phần tử trong mảng lớn hơn hoặc bằng K.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào :arr [] ={3, 5, 1, 7, 6, 6, 4, 8}

Đầu ra :5

Giải thích

Các phần tử trong mảng lớn hơn hoặc bằng 5:5, 6, 6, 7, 8.

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản và hiệu quả cho vấn đề là sắp xếp mảng và kiểm tra từ chỉ mục cuối cùng xem số phần tử sau phần tử có lớn hơn chính phần tử đó hay không. Nếu có, hãy trả lại phần tử.

Ví dụ

#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;
}

Đầu ra

The maximum value K such that array has at-least K elements that are >= K
is 3