Cho danh sách số đã sắp xếp, tìm các số bị thiếu trong khoảng từ số đầu đến số cuối.
Cách 1: Sử dụng range() và not in
Duyệt qua range(list[0], list[-1]+1), kiểm tra not in.
listA = [1, 5, 6, 7, 11, 14]
res = [x for x in range(listA[0], listA[-1]+1) if x not in listA]
print("Missing elements:", res) # [2, 3, 4, 8, 9, 10, 12, 13]
Cách 2: Sử dụng zip()
Duyệt cặp phần tử liên tiếp (m, n) từ zip(listA, listA[1:]). Nếu n - m > 1, thêm các số giữa vào kết quả.
listA = [1, 5, 6, 7, 11, 14]
res = []
for m, n in zip(listA, listA[1:]):
if n - m > 1:
for i in range(m+1, n):
res.append(i)
print("Missing elements:", res) # [2, 3, 4, 8, 9, 10, 12, 13]