Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem các phần tử hàng đợi có liên tiếp theo cặp trong Python hay không

Giả sử chúng ta có một hàng đợi đầy số. Chúng ta phải kiểm tra xem các phần tử liên tiếp trong hàng đợi có liên tiếp theo cặp hay không.

Vì vậy, nếu đầu vào là que =[3,4,6,7,8,9], thì đầu ra sẽ là True.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • q:=xác định một hàng đợi và chèn tất cả các phần tử từ danh sách đã cho vào q
  • temp:=một danh sách mới
  • trong khi q không trống, hãy thực hiện
    • chèn phần tử phía trước của hàng đợi vào tạm thời và xóa phần tử phía trước khỏi hàng đợi
  • temp2:=một danh sách mới
  • trong khi tạm thời không trống, hãy thực hiện
    • chèn phần tử nhiệt độ cuối cùng vào temp2
    • xóa phần tử cuối cùng khỏi tạm thời
  • kết quả:=True
  • trong khi kích thước của temp2> 1, thực hiện
    • x:=phần tử cuối cùng của temp2
    • xóa phần tử cuối cùng khỏi temp2
    • y:=phần tử cuối cùng của temp2
    • xóa phần tử cuối cùng khỏi temp2
    • nếu | x - y | không phải là 1, thì
      • kết quả:=Sai
    • chèn x và y vào q
  • nếu kích thước của temp2 là 1, thì
    • chèn phần tử cuối cùng của temp2 vào q
  • trả về kết quả

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

import queue
def solve(que):
   q = queue.Queue()
   for i in que:
      q.put(i)
   temp = []
   while q.qsize() != 0:
      temp.append(q.queue[0])
      q.get()
   temp2 = []
   while len(temp) != 0:
      temp2.append(temp[len(temp) - 1])
      temp.pop()
   result = bool(True)
   while len(temp2) > 1:
      x = temp2[len(temp2) - 1]
      temp2.pop()
      y = temp2[len(temp2) - 1]
      temp2.pop()
      if abs(x - y) != 1:
         result = False
      q.put(x)
      q.put(y)
   if len(temp2) == 1:
      q.put(temp2[len(temp2) - 1])
   return result
que = [3,4,6,7,8,9]
print(solve(que))

Đầu vào

[3,4,6,7,8,9]

Đầu ra

True