我的思路:
对原数组排序 用number记录大于等于当前数字的个数(也就是包括当前数字 数组后面还剩多少个数字)
我的代码:
def specialArray(self, nums):
# 对数组排序 i代表下标 number代表当前可能的特征值
nums.sort()
length=len(nums)
i=0
number=length
# 如果当前的数字大于等于特征值 并且前面的数字小于特征值 说明后面的全都大于等于特征值
# 后面还剩number个元素
while i<length:
if i >= 1 and nums[i] >= number and nums[i - 1] < number:
return number
elif i == 0 and nums[i] >= number:
return number
else:
i += 1
number -= 1
return -1
优化代码:
去掉number了
def specialArray(self, nums):
# 对数组排序 i代表下标
nums.sort()
length=len(nums)
i=0
# 当所有元素都大于length 特征值是length
if nums[0]>=length:
return length
# 其他情况
while i<length:
if i >= 1 and nums[i] >=(length-i) and nums[i - 1] < (length-i):
return (length-i)
else:
i += 1
return -1