代码随想录冲冲冲 Day4 链表part02

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

这道题也是使用了dummyhead的方法,在创建dummyhead之后,其实就是理清楚链接的顺序是什么,用数字来代表的话,如果dummyhead是0,链接完的顺序就是D213

在链接完2之后就会丢失1的信息 所以要把1保存下来 

又因为2本身是链接3的 但是调整位置后也会丢掉3的信息 所以也要存3的信息

之后就是按顺序链接起来就可以了 ,一个循环结束后把D的位置放到1这个位置也就是D345再重复上述的流程,直到D后面的节点都是NULL后为止

另外再返回时要返回这个链表的head,刚刚所有的操作都是在这个链表上的操作。

19. 删除链表的倒数第 N 个结点

这道题由于是删除第个节点,其实就是把倒数第n-1个节点和第n+1个节点连接起来

于是在使用快慢指针的时候,快指针先走N+1步之后,快慢指针距离相差N+1

之后快慢指针一起向后走

当快指针到结尾时,满指针就刚刚好到第n-1的位置 这是后链接n+1就成功删掉了倒数第n个节点

之后再返回这个链表就可以

面试题 02.07. 链表相交

这道题逻辑很简单。

链表相交,首先要看两个链表的长度差。

较长的那个链表先走多出来的步数

之后只要两个链表的一起走直到值相等时就返回

142. 环形链表 II

环形列表的代码部分很简单,但是数学逻辑比较需要思考。

首先快慢指针,慢指针一次走1,快指针一次走2;

所以快指针是一定会比满指针先进入环的,当慢指针和快指针相遇时

快指针已经在圈中走了很多圈了

慢指针的路程 : x (入环前)+ y(入环相遇点)

快指针的路程 : x (入环前)+y (入环相遇点)+ n(圈数)(y+z(相遇点到环形入口)

y + z就是一个圈的长度

所以 慢指针的路程 * 2 = 快指针的路程

通过简单的数学运算可以发现 当圈数时1时 x = z

从头结点出发一个指针,从相遇节点 也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是 环形入口的节点

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值