Giả sử ta có mảng nums các phần tử ≥ 0. Mảng gọi là đặc biệt (special) nếu tồn tại số x sao cho có đúng x số trong nums lớn hơn hoặc bằng x. x không nhất thiết là phần tử của nums. Tìm x nếu mảng đặc biệt, ngược lại trả về -1.
Ví dụ: nums = [4,6,7,7,1,0], output 4 vì có 4 số ≥ 4.
Giải thuật
- For
itừ 0 đếnmax(nums):count := 0- Với mỗi
jtrongnums:- Nếu
j >= i:count++
- Nếu
- Nếu
count == i: trả vềi
- Trả về
-1
Ví dụ (Python)
def solve(nums):
for i in range(max(nums) + 1):
count = 0
for j in nums:
if j >= i:
count += 1
if count == i:
return i
return -1
nums = [4, 6, 7, 7, 1, 0]
print(solve(nums))
Input
[4,6,7,7,1,0]
Output
4