2022-09-12-Leetcode 每日一题 1608.特征数组的特征值
本题在思考的时候我首先考虑到了哈希表,但是发现意义不大,此题不用讨论某个元素的个数(或者说元素可以不重复)。接着考虑将其排序,以降序排序。在完成降序排序后,从第一个开始判断是否满足条件并以下标计数。
若 ii 为特征值,那么 nums 中恰好有 i个元素大于等于 i。由于数组已经降序排序,说明nums[i] 必须大于等于 i+1并且nums[i+1](如果存在)必须小于 i+1。
此处的坑点就是下标并不等于个数,需要加1.
class Solution {
public:
int specialArray(vector<int>& nums) {
sort(nums.begin(),nums.end(),greater<int>());
for(int i=0;i<nums.size();i++)
{
if((nums[i]>=i+1)&&((i==nums.size()-1)|| nums[i+1]<i+1))
return i+1;
}
return -1;
}
};