• 力扣(2024.06.12)


    1. 20——有效的括号

    给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:

    1. 左括号必须用相同类型的右括号闭合。
    2. 左括号必须以正确的顺序闭合。
    3. 每个右括号都有一个对应的相同类型的左括号。

    标签:栈,字符串

    代码:

    1. class Solution:
    2. def isValid(self, s: str) -> bool:
    3. stack = []
    4. pair = {'[': ']', '(': ')', '{': '}'}
    5. for i in s:
    6. if i in '([{':
    7. stack.append(pair[i])
    8. else:
    9. if stack == []:
    10. return False
    11. else:
    12. if stack[-1] == i:
    13. stack.pop()
    14. else:
    15. return False
    16. if stack != []:
    17. return False
    18. else:
    19. return True

    2. 21——合并两个有序链表

    将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

    标签:链表,迭代

    代码:

    1. # Definition for singly-linked list.
    2. # class ListNode:
    3. # def __init__(self, val=0, next=None):
    4. # self.val = val
    5. # self.next = next
    6. class Solution:
    7. def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
    8. dummy = res = ListNode()
    9. while list1 and list2:
    10. if list1.val < list2.val:
    11. res.next = list1
    12. list1 = list1.next
    13. else:
    14. res.next = list2
    15. list2 = list2.next
    16. res = res.next
    17. if list1:
    18. res.next = list1
    19. if list2:
    20. res.next = list2
    21. return dummy.next

    3. 22——括号生成

    数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。

    标签:字符串,动态规划,回溯(目前不会)

    代码:

    4. 23——合并K个升序链表

    给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。

    标签:链表,迭代

    代码:

    1. # Definition for singly-linked list.
    2. # class ListNode:
    3. # def __init__(self, val=0, next=None):
    4. # self.val = val
    5. # self.next = next
    6. class Solution:
    7. def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
    8. def merge_two(list1, list2):
    9. dummy = res = ListNode()
    10. while list1 and list2:
    11. if list1.val < list2.val:
    12. res.next = list1
    13. list1 = list1.next
    14. else:
    15. res.next = list2
    16. list2 = list2.next
    17. res = res.next
    18. if list1:
    19. res.next = list1
    20. if list2:
    21. res.next = list2
    22. return dummy.next
    23. res = ListNode() # 初始化一个链表,只有一个值为0的结点
    24. res = res.next
    25. for i in range(len(lists)):
    26. res = merge_two(res, lists[i])
    27. return res

    5. 24——两两交换链表中的节点

    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

    标签:链表,迭代

    代码:

    1. # Definition for singly-linked list.
    2. # class ListNode:
    3. # def __init__(self, val=0, next=None):
    4. # self.val = val
    5. # self.next = next
    6. class Solution:
    7. def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
    8. dummy = res = ListNode()
    9. while head and head.next: # 链表至少有两个结点才能进入循环
    10. node1 = head
    11. node2 = head.next
    12. node3 = head.next.next
    13. res.next = node2
    14. node1.next = node3
    15. node2.next = node1
    16. res = res.next.next
    17. head = node3
    18. res.next = head # 链表有空结点或一个结点就不进入循环直接执行这句
    19. # 链表两两交换后不剩余结点或剩余一个结点也是执行这句
    20. return dummy.next

  • 相关阅读:
    iOS基础开发介绍
    数字化转型导师坚鹏:科技金融政策、案例及数字化营销
    助力新消费行业“三品”战略,从构建企业身份基础设施开始|身份云研究院
    e智团队实验室项目-第四周-YOLOv论文的对比实验中遇到的问题
    第8/100天 阅读笔记
    测试驱动的嵌入式C语言开发(TDD)(第1-3章)
    Flutter高仿微信-第32篇-单聊-语音
    《你不可不知的人性》经典语录
    【Python爬虫必备技术栈】urllib库&&urllib3库
    如何做好自动化测试?揭开测试项目团队的自动化实践过程……
  • 原文地址:https://blog.csdn.net/m0_52507142/article/details/139639061