Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tìm số bị thiếu trong dãy số đã sắp xếp trong Python


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]