Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค่าสูงสุด K เพื่อให้อาร์เรย์มีองค์ประกอบอย่างน้อย K ที่>=K ใน C++


ในปัญหานี้ เราได้รับอาร์เรย์ arr งานของเราคือสร้างโปรแกรมเพื่อค้นหาค่าสูงสุด K เพื่อให้อาร์เรย์มีองค์ประกอบอย่างน้อย K นั่นคือ>=K ใน C++

คำอธิบายปัญหา

เราจำเป็นต้องหาค่า 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