代码随想录算法训练营第三天| 203.移除链表元素 ,707.设计链表 ,206.反转链表

刷题建议

刷题建议与debug

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

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

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

Python菜鸟教程

203.移除链表元素

自己看到题目的第一想法

  1. 怎么遍历链表?忘了。。。

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

  1. 可以特殊判断head或者设置虚拟头节点,重点掌握虚拟头节点,删除,增加节点都设置虚拟头节点,统一操作,不用刻意判断
  2. 要理解整个流程,边界判断cur与cur->next,不要背

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

相关题目

707.设计链表

自己看到题目的第一想法

  1. 要熟悉如何初始化链表
  2. int get(int index) cur指向dummy head,判断index是否合法,然后遍历index值,最后返回cur.val
  3. void addAtHead(int val).新申请节点k,然后插入到 dummy_head与head中间
  4. void addAtTail(int val) 尾插法,cur从dummy_head开始遍历到cur.next = none,cur指向尾节点,
  5. …注意边界,带入边界值

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

  1. head下标为0,
  2. 注意边界,带入边界值,head 0
  3. for i in range(0),不执行
  4. 要掌握单链表写法和双链表写法

206.反转链表

自己看到题目的第一想法

  1. 设置双指针,fast指针的next指向slow,然后双双+1,直到fast.next为NULL
  2. 超出时间限制,应该是指针变换引起的

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

  1. 双指针法一个是要明确边界条件,cur指向None的时候,pre指向尾节点,反转结束
  2. 设置cur 在反转指针后,如何跳到下一个节点?设置temp节点存储
  3. pre最先指向None,cur指向head,开始反转
  4. 还需要掌握递归解法

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

  1. 想到了双指针,但没有想清楚边界条件和怎么实现的

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

你可能感兴趣的:(算法,链表,java)