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

Kiểm tra xem các phần tử của ngăn xếp có được sắp xếp theo cặp trong Python hay không

Giả sử chúng ta có một chồng số; chúng ta phải kiểm tra xem các giá trị trong ngăn xếp có liên tiếp theo cặp hay không. Các cặp này có thể tăng hoặc giảm. Nếu ngăn xếp có một số giá trị lẻ, thì phần tử trên cùng sẽ bị loại ra khỏi một cặp. Và chúng ta nên giữ lại nội dung ngăn xếp ban đầu sau khi kiểm tra.

Để giải quyết vấn đề này, chúng ta có thể sử dụng ba hoạt động trên ngăn xếp được gọi là đẩy, bật và kiểm tra xem ngăn xếp có trống hay không.

Vì vậy, nếu đầu vào giống như stk =[5, 6, -4, -5, 12, 11, 6, 7, 22], thì đầu ra sẽ là True vì sau khi loại bỏ phần tử trên cùng 22, các cặp là [(5 , 6), (-4, -5), (12, 11), (6, 7)] tất cả đều liên tiếp.

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

  • temp:=các phần tử pop từ stk và đẩy vào temp
  • xóa stk ngăn xếp
  • cờ:=True
  • trong khi kích thước của nhiệt độ> 1, thực hiện
    • item_first, item_second:=hai yếu tố hàng đầu của nhiệt độ và bật chúng lên
    • nếu | item_first - item_second | không phải là 1, thì
      • cờ:=Sai
    • đẩy item_first và item_second vào stk
  • nếu kích thước của nhiệt độ bằng 1, thì
    • đẩy nhanh nhiệt độ vào stk
  • cờ trả lại

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

Mã mẫu

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