题目简介:
给你一个非负整数数组 nums
。如果存在一个数 x
,使得 nums
中恰好有 x
个元素 大于或者等于 x
,那么就称 nums
是一个 特殊数组 ,而 x
是该数组的 特征值 。
注意: x
不必 是 nums
的中的元素。
如果数组 nums
是一个 特殊数组 ,请返回它的特征值 x
。否则,返回 -1
。可以证明的是,如果 nums
是特殊数组,那么其特征值 x
是 唯一的 。
示例 1:
1 | 输入:nums = [3,5] |
示例 2:
1 | 输入:nums = [0,0] |
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 1000
思路:
首先将数组进行升序排序,由于res
的范围为[1, nums.size()]
,所以我们就依次遍历数组,将res
初始化为nums.size()
。
若当前nums[i] < res
,就说明少于res
个元素大于等于res
,此时就将res--
。
若nums[i] >= res && nums[i - 1] < res
,就说明满足了要求,返回res
即可。
tip:
- 若排序后
nums[0] >= nums.size()
,则直接返回nums.size()
即可。
代码如下:
1 | class Solution { |