1608. Special Array With X Elements Greater Than or Equal X #
题目 #
-
给你一个非负整数数组
nums
。如果存在一个数x
,使得nums
中恰好有x
个元素 大于或者等于x
,那么就称nums
是一个 特殊数组 ,而x
是该数组的 特征值 。 -
注意:
x
不必 是nums
的中的元素。 -
如果数组
nums
是一个 特殊数组 ,请返回它的特征值x
。否则,返回-1
。可以证明的是,如果nums
是特殊数组,那么其特征值x
是 唯一的 。
思路 #
排序 #
代码 #
排序 #
class Solution {
public int specialArray(int[] nums) {
Arrays.sort(nums);
for (int k = nums.length; k >= 1; k--) {
boolean flag = true;
flag &= nums[nums.length-k] >= k;
flag &= nums.length - (k+1) < 0 || nums[nums.length - k - 1] < k;
if (flag == true) return k;
}
return -1;
}
}