Study Plan For Algorithms - Part10

WindMay發表於2024-08-24

1. 刪除連結串列的倒數第 N 個結點
題目連結:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/
給定一個連結串列,刪除連結串列的倒數第 n 個結點,並且返回連結串列的頭結點。

class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        dummy = ListNode(0)
        dummy.next = head
        fast = dummy
        slow = dummy

        for _ in range(n + 1):
            fast = fast.next

        while fast:
            fast = fast.next
            slow = slow.next

        slow.next = slow.next.next

        return dummy.next

2. 有效的括號
題目連結:https://leetcode.cn/problems/valid-parentheses/
給定一個只包括 '(',')','{','}','[',']' 的字串 s ,判斷字串是否有效。
有效字串需滿足:

  • 左括號必須用相同型別的右括號閉合。
  • 左括號必須以正確的順序閉合。
  • 每個右括號都有一個對應的相同型別的左括號。
class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        mapping = {')': '(', '}': '{', ']': '['}
        for char in s:
            if char in mapping.values():
                stack.append(char)
            elif char in mapping.keys():
                if not stack or stack.pop()!= mapping[char]:
                    return False
        return not stack

相關文章