


这个问题的关键在于枚举所有可能的特征值 x(从 0 到 len(nums)),然后检查是否恰好有 x 个元素大于等于 x。
可以按以下步骤实现:
算法思路:
-
枚举
x从0到len(nums)。 -
对于每个
x,统计nums中大于等于x的元素数量count。 -
如果
count == x,那么x就是特征值,直接返回。 -
如果循环结束都没有找到,返回
-1。
Python代码如下:
def specialArray(nums):
n = len(nums)
for x in range(n + 1):
count = sum(num >= x for num in nums)
if count == x:
return x
return -1
示例:
print(specialArray([3,5])) # 输出 2
print(specialArray([0,0])) # 输出 -1
print(specialArray([0,4,3,0,4])) # 输出 3
这个算法的时间复杂度是 O(n^2),但对于中等规模的数据是可以接受的。
296

被折叠的 条评论
为什么被折叠?



