• 图解LeetCode——1608. 特殊数组的特征值(难度:简单)


    一、题目

    给你一个非负整数数组 nums 。如果存在一个数 x ,使得 nums 中恰好有 x 个元素 大于或者等于 x ,那么就称 nums 是一个 特殊数组 ,而 x 是该数组的 特征值 。

    注意: x 不必 是 nums 的中的元素。

    如果数组 nums 是一个 特殊数组 ,请返回它的特征值 x 。否则,返回 -1 。可以证明的是,如果 nums 是特殊数组,那么其特征值 x 是 唯一的 。

    二、示例

    2.1> 示例 1:

    【输入】nums = [3,5]
    【输出】2
    【解释】有 2 个元素(3 和 5)大于或等于 2 。

    2.2> 示例 2:

    【输入】nums = [0,0]
    【输出】-1
    【解释】没有满足题目要求的特殊数组,故而也不存在特征值 x 。
    如果 x = 0,应该有 0 个元素 >= x,但实际有 2 个。
    如果 x = 1,应该有 1 个元素 >= x,但实际有 0 个。
    如果 x = 2,应该有 2 个元素 >= x,但实际有 0 个。
    x 不能取更大的值,因为 nums 中只有两个元素。

    2.3> 示例 3:

    【输入】nums = [0,4,3,0,4]
    【输出】3
    【解释】有 3 个元素大于或等于 3 。

    2.4> 示例 4:

    【输入】nums = [3,6,7,7,0]
    【输出】-1

    提示:

    • 1 <= nums.length <= 100
    • 0 <= nums[i] <= 1000

    三、解题思路

    根据题目描述,x的取值范围应该是[1, nums.length],那么为了便于判断比对,我们首先需要将nums进行升序排序。然后,根据下图的例子,我们可以得出如下结论:

    当x等于 nums.length 时,需要满足nums[0] >= nums.length
    当x等于 [1, nums.length - 1] 时,需要满足nums[i] >= (res = nums.length - i) 并且 nums[i - 1] < res

    那么,题目中描述到:“可以证明的是,如果 nums 是特殊数组,那么其特征值x是唯一的”,为什么呢?我们再来把视线移动到上方图片上,我们假设x不是唯一的,即:假设x==6并且x==5。那么当x等于6的时候,我们需要满足nums[1]>=6;当x等于5的时候,我们需要满足nums[1] < 5; 那么针对nums[1]是无法满足即大于等于6又小于5的。所以,只要nums是特殊数组,特征值x就是唯一的。

    由于特征值x是唯一的,所以,只要有x满足了上面的判断条件,就将x值返回即可。如果没有符合的x,则返回-1;

    四、代码实现

    1. class Solution {
    2.     public int specialArray(int[] nums) {
    3.         Arrays.sort(nums);
    4.         if (nums[0>= nums.lengthreturn nums.length;
    5.         for (int i = 1, res = 0; i < nums.length; i++)            
    6.             if (nums[i] >= (res = nums.length - i) && nums[i - 1< res) return res;
    7.         return -1;
    8.     }
    9. }

    今天的文章内容就这些了:

    写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

    更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

  • 相关阅读:
    Requests之不同类型的参数,发送请求接口!
    Vue面试题整理
    东方通部署vue项目
    【集合】单列集合
    postgresql源码学习(49)—— MVCC⑤-cmin与cmax 同事务内的可见性判断
    【开发指南】AR Foundation 开发环境部署
    Django REST项目实战:在线中文字符识别
    供应链平台 采购信息监控更新提醒
    移知模拟版图就业班,直播教学+项目实战,两个月即可就业!
    MVVM项目开发(商品管理系统三)
  • 原文地址:https://blog.csdn.net/qq_26470817/article/details/126811991