Leetcode 24, 19,面试题02.07

这篇博客详细介绍了LeetCode中关于链表的四个问题:两两交换链表节点(24),删除链表倒数第N个节点(19),链表相交以及环形链表(142)。通过初始思路、学习过程和实现方法,深入剖析了每个问题的解决策略,强调了画图和指针操作的重要性,并提及了利用栈和哈希的替代解法。文章总结指出链表题的关键在于理解指针动态变化和边界条件处理。
摘要由CSDN通过智能技术生成

目录

Leetcode 24

初始思路

学习后

实现过程

Leetcode 19

初始思路

学习后

实现过程

思路一

思路二

面试题02.07

初始思路

学习后

实现过程:

 Leetcode142

初始思路

学习后

思路一

思路二

总结


Leetcode 24

题目:两两交换链表节点

学习资料:代码随想录

初始思路

  • 首先画图,尝试双指针,发现后续遍历过程中无法将前一个节点链接至现有节点。进而需要3个指针,由于head位置可能特殊,所以引入虚拟节点。
  • 实现过程中,发现指针更新的方式比较蠢

学习后

  • 思路基本一致,主要是更新部分,其实就是每次更新pre指针就好,cur和ne指针都是根据pre指针来定义

实现过程

  • 注意循环终止条件,画图就可以知道,就是cur和ne等于none时就终止,实现上就是pre.next和pre.next.next 不为none
        dummy = ListNode(next=head)
        pre = dummy

        while pre.next and pre.next.next:

            cur = pre.next
            ne = pre.next.next

            cur.next = ne.next
            ne.next = cur
            pre.next = ne

            pre = pre.next.next
        
        return dummy.next

Leetcode 19

题目:删除链表倒数第N个

学习资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值