链表刷题

前三道题(LeetCode题号24、19和面试题02.07)相对还好。链表的题要注意的:①空指针的情况要考虑清楚。②在移动位置时要考虑全面参与移动的所有结点的情况。

最难的题是142环形链表。这个题难点在于没想到怎么判断是否存在循环。看了解析才知道,利用一个fast和一个slow,fast一次向后推进两个结点,slow一次向后推进一个结点。每次fast都会追slow一个结点。所以fast迟早会追上slow,如果fast==slow则存在循环;若fast往后推进发现fast.next或fast.next.next为null,则不存在循环。第二个难点,在于确定循环之后,怎么判断结点的下标,这个还需要数学推理。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务