1608. Special Array With X Elements Greater Than or Equal X You are given an array nums of non-negative integers. nums is considered special if there exists a number x such that there are exactly x numbers in nums that are greater than or equal to x.
Notice that x does not have to be an element in nums.
Return x if the array is special, otherwise, return -1. It can be proven that if nums is special, the value for x is unique.
Solution
-
Sort the arr.
x
falls in[0, len(nums)]
. -
If
x <= nums[i]
andx > nums[i]
, means there’re exactlyx
numbers >=x
.
def specialArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
list.sort(nums)
l = len(nums)
pre = -1
for i, num in enumerate(nums):
if (l - i) <= num and (l - i) > pre:
return l - i
pre = num
return -1