我的链接列表为1->2->3->4->5->6
我需要将其更改为1->6->2->5->3->4
ielast元素链接到第一个元素,最后一个元素链接到第二个元素,依此类推。
我使用了2个指针,一个快速,一个慢速。一旦我到达中心,我将下半部分中的所有元素放入堆叠中。 [4,5,6]
现在,使用第三个指针,我遍历原始链表并从堆栈中插入节点,即pop [6,5,4]
有没有比这更好的解决方案?
答案 0 :(得分:0)
我认为这是最佳的 我用2个指针。一次缓慢,一次一跳,另一次快速,一次跳2次 因此,我找到了中心和中间数 现在,从中心到结束,我反转链表 我现在有2个链接列表,一个从头到尾,另一个从中心到另一个 只需从列表1中取出一个元素,并将链接2中的元素链接到此元素并递增两个列表。 无需额外空间,时间复杂度为O(N)