链表算法题二,还原题目,用debug调试搞懂每一道题 (4)

按照上面图解分析,fast快指针指向节点【3】的时候才算真正初始化快慢指针完成。

链表算法题二,还原题目,用debug调试搞懂每一道题

当快指针指向节点【5】时,slow慢节点指向节点【3】

注意:中间省略了一步,即慢指针指向节点【2】时,快指针指向节点【4】

节点【5】是最后一个节点,再次进入while循环。

链表算法题二,还原题目,用debug调试搞懂每一道题

最后一次循环时,慢指针指向了4,快指针下一个节点已经为null,此时结束循环。

链表算法题二,还原题目,用debug调试搞懂每一道题

五,移除重复节点

链表算法题二,还原题目,用debug调试搞懂每一道题

1.5.1 题目分析

这道题和上一篇中的题目【删除排序链表中的重复元素】是一样的,简单的做法即利用Set集合保存未重复的节点,再遍历链表判断是否已存在Set集合中。

因此本道题就不在多分析,直接贴上代码。

1.5.2 代码分析 Set<Integer> set = new HashSet<>(); ListNode temp = head; while(temp != null && temp.next != null){ set.add(temp.val); if(set.contains(temp.next.val)){ temp.next = temp.next.next; }else{ temp = temp.next; } } return head; } 六,总结

本次文章共分享总结5道题目,仔细分析有没有发现这些题套路都是一样的。都利用了双指针的思想,通过一定的规则移动快慢指针获取指定链表节点。

本次的5道题目和上次的3道题目,基本已经包含了链表简单题目的所有类型。当你把本篇文章的题目看完后,关于链表的简单题目你也已经做完了。

本人已经将链表的所有简单题目刷完,总结出来的结论即套路都是一样的。简单来说,大部分的题目都可以利用双指针,递归,数组来完成

在下篇文章中会对链表的简单题目做一个小总结。

最后,求关注

原创不易,每一篇都是用心在写。如果对您有帮助,就请一键三连(关注,点赞,再转发)

我是杨小鑫,坚持写作,分享更多有意义的文章。

感谢您的阅读,期待与您相识!

链表算法题二,还原题目,用debug调试搞懂每一道题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwfjs.html