LinkedList以相反的顺序划分和合并

时间:2016-06-27 16:43:30

标签: algorithm linked-list

我的链接列表为1->2->3->4->5->6

我需要将其更改为1->6->2->5->3->4

ielast元素链接到第一个元素,最后一个元素链接到第二个元素,依此类推。

我使用了2个指针,一个快速,一个慢速。一旦我到达中心,我将下半部分中的所有元素放入堆叠中。 [4,5,6]

现在,使用第三个指针,我遍历原始链表并从堆栈中插入节点,即pop [6,5,4]

有没有比这更好的解决方案?

1 个答案:

答案 0 :(得分:0)

我认为这是最佳的 我用2个指针。一次缓慢,一次一跳,另一次快速,一次跳2次 因此,我找到了中心和中间数 现在,从中心到结束,我反转链表 我现在有2个链接列表,一个从头到尾,另一个从中心到另一个 只需从列表1中取出一个元素,并将链接2中的元素链接到此元素并递增两个列表。 无需额外空间,时间复杂度为O(N)