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

Chương trình kiểm tra tất cả số 1 có nằm liên tiếp nhau không trong Python

Cho danh sách nums chứa ít nhất một số 1. Kiểm tra xem tất cả các số 1 có xuất hiện liên tiếp nhau hay không.

Ví dụ: nums = [8, 2, 1, 1, 1, 3, 5] → True.

Thuật toán giải quyết (O(n), trạng thái)

  1. Khởi tạo visited = 0 (0=chưa thấy 1, 1=đang trong khối 1, 2=đã hết khối 1)
  2. Duyệt từng x:
    • Nếu x == 1:
      • Nếu visited == 2: trả về False (gặp 1 sau khi đã hết khối)
      • visited = 1
    • Ngược lại (x != 1) và visited != 0: visited = 2
  3. Trả về True

Ví dụ minh họa

def solve(nums):
    visited = 0
    for x in nums:
        if x == 1:
            if visited == 2:
                return False
            visited = 1
        elif visited:
            visited = 2
    return True

nums = [8, 2, 1, 1, 1, 3, 5]
print(solve(nums))

Đầu vào

[8, 2, 1, 1, 1, 3, 5]

Đầu ra

True