IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 图解LeetCode——1608. 特殊数组的特征值(难度:简单) -> 正文阅读

[数据结构与算法]图解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;

四、代码实现

class?Solution?{
????public?int?specialArray(int[]?nums)?{
????????Arrays.sort(nums);
????????if?(nums[0]?>=?nums.length)?return?nums.length;
????????for?(int?i?=?1,?res?=?0;?i?<?nums.length;?i++)????????????
????????????if?(nums[i]?>=?(res?=?nums.length?-?i)?&&?nums[i?-?1]?<?res)?return?res;
????????return?-1;
????}
}

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

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

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

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:14:52  更:2022-09-15 02:16:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 19:21:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码