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)
- Khởi tạo
visited = 0(0=chưa thấy 1, 1=đang trong khối 1, 2=đã hết khối 1) - 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
- Nếu
- Ngược lại (
x != 1) vàvisited != 0:visited = 2
- Nếu
- 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