问题:给定排序链表
1->2->3->4->5->6->7
更改链接列表中的指针以使其成为
7->1->6->2->5->3->4
使用恒定空间。
我尝试使用以下算法解决它:
从中间节点反转链接列表。将中间节点标记为y并将节点作为x开始。
1->2->3->7->6->5->4
x y
如果y =中间节点AND y!= x.next,则交换y和x.next。然后交换x和x.next。
1->7->3->2->6->5->4
x y
7->1->3->2->6->5->4
x y
将x推进两个节点,y推进1个节点。
7->1->3->2->6->5->4
x y
现在如果(x!= y){swap x和y}
7->1->6->2->3->5->4
x y
将x推进两个节点,y推进1个节点
7->1->3->2->6->5->4
x y
最后我们得到了
7->1->6->2->5->3->4
问题:
有更简单的方法吗?
答案 0 :(得分:2)
这是一个简单的解决方案:
样品:
1->2->3->4->5->6->7
尺寸为7
。 (我们应该分为4和3)1->2->3->4
和5->6->7
1->2->3->4
和7->6->5
7->1->6->2->5->3->4
答案 1 :(得分:0)
您可以在Linked list problem问题17和18中找到两个复杂的解决方案。