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;
}
}