题目简介:
给你一个非负整数数组 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 <= 1000 <= 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 { |