● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II

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

1.自己思路:两两一组 每组操作流程一样 只需要实现一组逻辑即可

2.题解思路:其实真正是三个一组 那么从虚拟头节点开始 while循环进行每次操作 注意循环终止条件!!!两种情况 奇数与偶数

第一次编写 输出漏掉了参数 原因是此时的第三个节点丢失cur->next->next->next 因为此时这个表示因为前面的赋值已经修改了 所以需要记录第三个节点

第二次错误 判断条件错误 应该是与而不是或 或的话while操作会变成空指针 

改正后pass

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

1.自己思路: 删除链表操作已知 困难点在于怎么根据N 来判断循环次数

2.题解思路:巧妙!!!使用两个遍历节点 一个为fast 一个为slow 快节点先走n+1步 然后快慢节点一点循环直到快节点走到null 为什么是n+1 因为删除第n个节点 需要移动到n-1个节点那

第一次写错误 注意fast走n步得fast不为null 防止特殊情况 第二个判断条件为fast != NULL 则fast走到尾 这里可以草稿纸上自己画图理解一下次数

改正后pass

面试题 160. 链表相交

1.自己思路: while循环一直遍历 但是得注意特殊情况 否则会出现空指针 通过率百分之50

2.题解思路:

1.计算出两个链表的长度 然后比较长度 让长的向短看齐(原因是这样while循环时 就可以在一个循环里 而不是两个链表循环次数不同)

第一次写 pass 个人感觉关键点在于想到把两个链表变成同一长度 然后进行while循环

环形链表II

1.自己思路:可以定义快慢指针 然后快的相对速度比慢的多1个 这样不会出现漏掉情况 后续没有有效思路 失败!!!

2.题解思路:

1.想出用快慢指针思路

2.分解各部分的长度 得出相等公式 然后得出想要求的长度对应的值

3.难点在于理解到 快慢指针相遇后 再进行绕圈 此时若和从头开始一直向后走的遍历指针相等 则代表是入环点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值