代码随想录算法训练营第四天| 24.两两交换链表节点 ,19.删除链表倒数第N个节点 ,160.链表相交 142.环形链表II

刷题建议

刷题建议与debug

  1. 代码随想录目前基本都有了视频讲解,一定要先看视频,事半功倍。
  2. 写博客,将自己的感悟沉淀下来,不然会忘
  3. 大家提问的时候,记得要把问题描述清楚,自己在哪一步遇到了问题,做了哪些调试,而不要只是把代码甩出来,这样方便大家帮忙快速定位问题。

博客内容:(博客记录以及打卡格式)

今日学习文章链接和视频链接

Python菜鸟教程

24.两两交换链表节点

自己看到题目的第一想法

  1. 完全没思路

看完代码随想录之后的想法

  1. 关键1:想清楚遍历的终止条件
  2. 关键2:虚拟头节点操作
  3. 关键3:注意临时节点的使用,类似于反转链表

自己实现过程中遇到哪些困难

  1. dummy_head = ListNode(next=head)
  2. 自己画图理解逻辑,注意怎么用临时节点表示节点

相关题目

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

自己看到题目的第一想法

  1. 关键在于数学和边界,从dummyhead到None到底要走几步?倒数第n个实际上是第Len-n+1个
  2. 没有用dummyhead,这是不应该的。

看完代码随想录之后的想法

  1. 删除操作要用dummyhead,这样不用对头节点删除进行特殊判断
  2. 快慢指针
  3. 快指针先移动N步,然后快慢指针同时移动直到快指针移动到None,慢指针刚好指向被删除的节点

160.链表相交

自己看到题目的第一想法

  1. A,B两个链表找到长度更长的,然后走len1-len2步,现在A,B一样长
  2. 然后两个指针同时向前走,直到相等,如果没有相等返回null

看完代码随想录之后的想法

  1. 想法是对的,但是要注意代码不要冗余,最后一个指针指向最长链表

自己实现过程中遇到哪些困难

今日收获,记录一下自己的学习时长

142.环形链表II

自己看到题目的第一想法

  1. 第一步判断链表是否有环
  2. 第二步如何找到环入口
  3. 无思路

看完代码随想录之后的想法

  1. 快慢指针判断是否有环,fast每次走两步,slow每次走一步,那么二者相遇必然是在环内,如果相遇则代表有环
  2. 二者相遇后,fast指针指向相遇的位置,slow指针重回head,然后同时向前走,那么二者相遇就是环入口,具体推导过程画图
  3. 注意循环结束条件,fast是两步两步跳的

自己实现过程中遇到哪些困难

今日收获,记录一下自己的学习时长

你可能感兴趣的:(算法,链表,数据结构)