ในปัญหานี้ เราได้รับอาร์เรย์ 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