檢查Python棧中的元素是否成對排序
假設我們有一個數字棧;我們必須檢查棧中的值是否成對連續。這些對可以是遞增或遞減的。如果棧有奇數個值,則頂部元素將被排除在對之外。並且我們應該在檢查後保留原始棧內容。
為了解決這個問題,我們可以在棧上使用三個操作,稱為push、pop和檢查棧是否為空。
因此,如果輸入類似於stk = [5, 6, -4, -5, 12, 11, 6, 7, 22],則輸出將為True,因為在刪除頂部元素22後,對為[(5, 6), (-4, -5), (12, 11), (6, 7)],所有這些都是連續的。
為了解決這個問題,我們將遵循以下步驟:
- temp := 從stk中彈出元素並推入temp
- 清空棧stk
- flag := True
- 當temp的大小> 1時,執行以下操作:
- item_first, item_second := temp的頂部兩個元素並彈出它們
- 如果|item_first - item_second|不等於1,則
- flag := False
- 將item_first和item_second推入stk
- 如果temp的大小等於1,則
- 將temp的頂部推入stk
- 返回flag
讓我們看看下面的實現,以便更好地理解:
示例程式碼
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))
輸入
[5, 6, -4, -5, 12, 11, 6, 7, 22]
輸出
True
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP