iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
Software Development

30天快速打造Python資料結構&演算法邏輯刷爆LeetCode系列 第 28

DAY 28 「棧(Stacks)Leetcode」必考的Python程式碼撰寫~

  • 分享至 

  • xImage
  •  
  • 用棧實現堆 (Implement Queue using Stacks) - 題號:232
    題目描述:使用棧實現隊列的以下操作:push(x)、pop()、peek()、empty()。
class MyQueue:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []

    def push(self, x):
        self.stack1.append(x)

    def pop(self):
        if not self.stack2:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
        return self.stack2.pop()

    def peek(self):
        if not self.stack2:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
        return self.stack2[-1]

    def empty(self):
        return not self.stack1 and not self.stack2
  • 用隊列實現棧 (Implement Stack using Queues) - 題號:225
    題目描述:使用隊列實現棧的以下操作:push(x)、pop()、top()、empty()。
from collections import deque

class MyStack:
    def __init__(self):
        self.queue = deque()

    def push(self, x):
        self.queue.append(x)
        for _ in range(len(self.queue) - 1):
            self.queue.append(self.queue.popleft())

    def pop(self):
        return self.queue.popleft()

    def top(self):
        return self.queue[0]

    def empty(self):
        return not self.queue
  • 有效的括號 (Valid Parentheses) - 題號:20
    題目描述:給定一個只包括 '(',')','{','}','[',']' 的字符串,判斷字符串是否有效。
def isValid(s):
    stack = []
    mapping = {')': '(', '}': '{', ']': '['}
    for char in s:
        if char in mapping:
            top_element = stack.pop() if stack else '#'
            if mapping[char] != top_element:
                return False
        else:
            stack.append(char)
    return not stack
  • 刪除字符串中的所有相鄰重覆項 (Remove All Adjacent Duplicates In String) - 題號:1047
    題目描述:給出由小寫字母組成的字符串 S,重覆項刪除操作會選擇兩個相鄰且相同的字母,並刪除它們。
def removeDuplicates(S):
    stack = []
    for char in S:
        if stack and stack[-1] == char:
            stack.pop()
        else:
            stack.append(char)
    return ''.join(stack)

上一篇
DAY 27 「雙指針法 Leetcode」面試考題的Python程式碼撰寫~
下一篇
DAY 29 「組合(Combinations)Leetcode」必考的Python程式碼撰寫~
系列文
30天快速打造Python資料結構&演算法邏輯刷爆LeetCode30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言