两两交换链表中的节点

法一:迭代

链表操作的最重要的是,一个结点的next指向别的结点时,该节点原来后面的那个结点不能丢,要能取到;

要使用迭代,要找多可以迭代的单元,本题的迭代单元为需要交换的两结点。

要使迭代过程中,所有结点都不丢失,至少还需要两个指针,这里设为 pre 和 tem ,分别为迭代单元的前一个结点,和迭代单元的第一个结点,

法二:递归

  • 每一层递归结束后,都返回交换完成后的头结点;
  • 每个函数交换两个结点,至少需要两个指针
  • 复杂度分析:
    时间复杂度:O ( n ) O(n)O(n),其中 n 是链表的节点数量。需要对每个节点进行更新指针的操作。
    空间复杂度:O ( 1 ) O(1)O(1),法一迭代法为O ( 1 ) O(1)O(1),只需常量空间;法二递归空间复杂度为O ( n ) O(n)O(n),其中 n 是链表的节点数量。空间复杂度主要取决于递归调用的栈空间。
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值