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

Kiểm tra các phần tử trong stack có liên tiếp theo cặp trong Python

Cho một stack các số. Kiểm tra xem các phần tử có liên tiếp theo cặp hay không (cặp có thể tăng hoặc giảm 1). Nếu stack có số lẻ phần tử, phần tử đỉnh stack bị bỏ qua. Yêu cầu giữ nguyên nội dung stack sau khi kiểm tra.

Ví dụ: stk = [5, 6, -4, -5, 12, 11, 6, 7, 22] → bỏ 22, các cặp: (5,6), (-4,-5), (12,11), (6,7) đều liên tiếp → True.

Giải thuật

  • Dùng một stack tạm temp để đảo ngược stack gốc.
  • Lấy từng cặp từ temp, kiểm tra hiệu tuyệt đối bằng 1.
  • Đẩy lại vào stack gốc để khôi phục.

Mã ví dụ

def solve(stk):
    temp = stk[::-1]
    stk.clear()
    flag = True
    while len(temp) > 1:
        item_first = temp[-1]
        temp.pop()
        item_second = temp[-1]
        temp.pop()
        if abs(item_first - item_second) != 1:
            flag = False
        stk.append(item_first)
        stk.append(item_second)
    if len(temp) == 1:
        stk.append(temp[-1])
    return flag

stk = [5, 6, -4, -5, 12, 11, 6, 7, 22]
print(solve(stk))

Đầu vào

[5, 6, -4, -5, 12, 11, 6, 7, 22]

Đầu ra

True