1608. Special Array With X Elements Greater Than or Equal X

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

致谢 #

宫水三叶