Go语言中文网,致力于每日分享编码、开源等知识,欢迎关注我,会有意想不到的收获!
1 题目描述
给定一个单链表L: L0 → L1 → … → Ln-1 → Ln,将其重排为L0 → Ln → L1 → Ln-1 → L2 → Ln-2→…。请勿更改节点中的值。
例子1:
给定1 -> 2 -> 3 -> 4,重排为1 -> 4 -> 2 -> 3;
例子2:
给定1 -> 2 -> 3 -> 4 -> 5,将其重排为1 -> 5 -> 2 -> 4 -> 3。
题目出处:
https://leetcode.com/problems/reorder-list/
2 解决思路
2.1)从头至尾遍历原链表节点构建一个双向链表;
2.2)两个指针分别从头至尾、从尾至头同时遍历该双向链表来建立所要求的顺序关系,直至汇合即完成重排。重排过程如下图所示。
3 golang实现代码
https://github.com/olzhy/leetcode/blob/master/143_Reorder_List/test.go
原文:https://leileiluoluo.com/posts/leetcode-reorder-linked-list.html
本文作者:磊磊落落的博客,原创授权发布