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

更新於: 2020-10-09

238 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告