将数组排序后从大到小遍历,设置一个递增的变量t,当v[i] > t的时候,说明有t个数大于t,最后一个满足v[i] > t的t即为所求结果。
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 6 int main() 7 { 8 int n; 9 cin >> n; 10 vector<int> v(n); 11 for (int i = 0; i < n; i++) 12 cin >> v[i]; 13 sort(v.begin(), v.end()); 14 int result = 0; 15 int t = 1; 16 for (int i = n - 1; i >= 0 && v[i] > t; i--, t++); 17 cout << --t; 18 return 0; 19 }