day03环形链表

关于 两两交换链表中的节点

  • while (prev.next != nu11 && prev.next.next != nu11) 这边为什么是&& 不是|| 一个是对于偶数个结点的判断 一个是奇数个结点 那不应该是||的关系吗?
    奇数节点就不需要交换了,所以只有满足后面有偶数个节点的时候才会进入循环
  • 循环条件,什么情况应该判断指针本身为空呢?
    可以看这个这个遍历的指针最后需要走到哪里  需不需要对最后一个节点做操作
  • 三道题套路解决递归问题 | lyl's blog 里面有递归的题解 很好的博客

关于 删除链表的倒数第N个节点

  • 链表问题的debug:可以在循环中逻辑执行前打一次输出语句,执行后打一次输出节点值val, 符合你的预期在增加打输出node.next.val(如果你需要知道后面连接是啥),空针就代表你断链了或者其他错误了, 然后这样慢慢增加找, 还有一种就是利用手动画图debug,记得自己学链表的时候经常画图设计简单case边界case来调试,现在写链表的题都是可以脑子有链表图debug了哈哈,可以尝试一下哈各位。

关于 链表相交

  • 大家在遇到无法定位头节点,头节点可能被移动删除导致定位失效的时候可以考虑用虚拟头节点,并不是每道题都要用的!!!!
  • 指针存的地址,指针一样,指向一个位置,本题要比较的是结点指针不是值
  • 不要把值和节点的概念混淆起来  节点是一个实例 占用一块空间  值只是它的成员变量  值怎样和节点本身没有任何关系  一个实例只由它的地址唯一确定!
  • 寻找链表相交节点的题,有提到了一种两个指针分别依次走两个链表的思路,其本质上是链表拼接,详情可以参考题解
  • 相交链表的数学证明过程

关于 环形链表

  • 今天的题目的环形链表大家有一些人不会数学方法的话,这边提供一种只需要数环节点个数的方法哈, 因为保证了fast节点比slow节点间距X个节点(环的节点个数),所以相遇一定会在链表头哈
  • 很多同学在 node.next.next空指针,主要原因就是 next可能为null 在用这个之前优先考虑
  • 找环形链表的入口时,为什么 n 可以直接取 1 呢?
    • 我是这样理解的,就是如果相遇前快指针在环中转了不止一圈,比如说转了 5 圈,导致转多圈的原因就是 x 比较长,而环的周长可能比较短。所以最后我们在找入口的时候,两个指针分别从起点和环相遇点开始移动,如果是多圈的情况,那在这个移动过程中从相遇点开始移动的指针也会转多圈,就像公式里写的,x是包含n-1个周长加上 z 的,所以我们可以将这部分在 x 抵消,也就是假设 n 为 1,此时从相遇点开始走的指针也还是在原位出发(省去了转多圈的操作),最后结果还是一样的。
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值