class Solution:
def specialArray(self, nums: List[int]) -> int:
for i in range(1, len(nums) + 1):
cnt = 0
for num in nums:
if num >= i:
cnt += 1
if cnt == i:
return i
return -1class Solution:
def specialArray(self, nums: List[int]) -> int:
l, r = 1, len(nums)
while l <= r:
mid = (l + r) >> 1
cnt = sum(1 for num in nums if num >= mid)
if cnt == mid:
return mid
if cnt < mid:
r = mid - 1
else:
l = mid + 1
return -1class Solution:
def specialArray(self, nums: List[int]) -> int:
nums.sort()
i = 0
prev = -1
total_right = len(nums)
while i < len(nums):
if nums[i] == total_right or (prev < total_right < nums[i]):
return total_right
while i + 1 < len(nums) and nums[i] == nums[i + 1]:
i += 1
prev = nums[i]
i += 1
total_right = len(nums) - i
return -1class Solution:
def specialArray(self, nums: List[int]) -> int:
nums.sort()
n = len(nums)
i, j = 0, 1
while i < n and j <= n:
while i < n and j > nums[i]:
i += 1
if j == n - i:
return j
j += 1
return -1class Solution:
def specialArray(self, nums: List[int]) -> int:
count = [0] * (len(nums) + 1)
for num in nums:
index = min(num, len(nums))
count[index] += 1
total_right = 0
for i in range(len(nums), -1, -1):
total_right += count[i]
if i == total_right:
return total_right
return -1