“ 最近由于公司项目多,搁置了文章算法分享,扶我起来我还能再写,话不多说进入今日分享算法。”
老规矩,链表在这里我就不介绍了,不懂的可以去网上搜索看相关的文章之后再来做这道题,先把题目给大家看看,如下所示:
剑值offer-题号22
友情提示:在这里的时候希望小伙伴先不要往下翻,先想想思路然后再看我接下来的分析。
这一类的题我们很快就会联想到快慢指针,当时切入点是什么呢?如何和快慢指针进行联系呢?不卖关子了,答案会在我画的下面这幅图中揭晓。
思路导向图
从上面的图中可以推导出快指针(fast)初始next k次,而慢指针(slow)指向初始head头部,然后fast和slow同时next,当fast指向null时停止next,这时slow指向即为最终所求值。
其实推到过程为逆向思维,路线1和路线2总长相等,并且k也是相等的,那么总长-k为剩余长度也是相等的,不知道大家对这幅图有没有什么启发,接下来就是公布代码时刻。
1 | /** |
如果有更优的解,欢迎在下面留言,膜拜大佬抱大腿。