【力扣hot100】刷题笔记Day8

前言

  • 到了大章节【链表】了,争取两三天给它搞定!!

160. 相交链表 - 力扣(LeetCode)

  • 双指针

    • 参考题解,相比于求长度+右对齐再一起出发的方法简洁多了
    • class Solution:
          def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> Optional[ListNode]:
              A, B = headA, headB
              while A != B:
                  A = A.next if A else headB  # A跑完就跳到B开始
                  B = B.next if B else headA  # B跑完就跳到A开始
              return A  # 返回重合的节点或者返回空值

 206. 反转链表 - 力扣(LeetCode)

  • 双指针

    • class Solution:
          def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
              pre, cur = None, head
              while cur:
                  temp = cur.next  # 暂存下一个节点
                  cur.next = pre   # 反转指针
                  pre = cur        # pre后移
                  cur = temp       # cur后移
              return pre  # 最后cur是None,pre是最后的结点

234. 回文链表 - 力扣(LeetCode)

  • 快慢指针 + 翻转

    • 参考题解,复用上一题的翻转,注意一下奇偶以及最后要恢复链表
    • class Solution:
          def isPalindrome(self, head: Optional[ListNode]) -> bool:
              # 翻转链表
              def reverse(head):
                  pre, cur = None, head
                  while cur:
                      temp = cur.next
                      cur.next = pre
                      pre = cur
                      cur = temp
                  return pre
              # 快慢指针
              fast = slow = head
              while fast.next and fast.next.next:
                  fast = fast.next.next
                  slow = slow.next
              pre = slow # 存个pre断点方便恢复
              slow = slow.next  # 后半截从中点的下一个节点开始
              left = head
              right = last = reverse(slow)  # 存个last最后节点方便恢复
              while right:  # 奇数right短一截,偶数right和left一样长
                  if left.val != right.val:
                      return False
                  left = left.next
                  right = right.next
              # 恢复链表
              pre.next = reverse(last)
              return True

后言

  • 在工位刷题效率杠杠的!有双屏无论是编辑博文还是看题解都很舒服~ 链表真好玩呀(

相关推荐

  1. hot100笔记Day1

    2024-02-21 15:10:01       54 阅读
  2. hot100笔记Day4

    2024-02-21 15:10:01       56 阅读
  3. hot100笔记Day24

    2024-02-21 15:10:01       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 15:10:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 15:10:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 15:10:01       82 阅读
  4. Python语言-面向对象

    2024-02-21 15:10:01       91 阅读

热门阅读

  1. axios介绍和使用

    2024-02-21 15:10:01       38 阅读
  2. Unity调用文心-ERNIE-Bot-turbo

    2024-02-21 15:10:01       50 阅读
  3. 学习总结20

    2024-02-21 15:10:01       47 阅读
  4. c语言之for循环语句

    2024-02-21 15:10:01       44 阅读
  5. 我的创作纪念日

    2024-02-21 15:10:01       58 阅读
  6. VS和QT联合开发

    2024-02-21 15:10:01       56 阅读
  7. vue父组件调用子组件的方法 或传递值给子组件

    2024-02-21 15:10:01       56 阅读