在一次笔试中,我遇到了一个问题,内容如下:
我们得到一个整数链表,其中前半部分和后半部分都是独立排序的。编写一个函数来合并这两个部分以创建一个单一的排序链表。
约束:不要使用任何额外的空间。
测试用例和输出:
输入List1:
4->5->6->7->1->2->3;
输出:
1->2->3->4->5->6->7
输入2:
5->6->7->8->1->2->3->4;
输出2:
1->2->3->4->5->6->7->8
我能想到的是使用两个指针:一个用于前半部分遍历,一个用于后半部分遍历。使用它们,我可以从头到中(使用第一个指针)和从中间到最后(使用第二个指针)遍历。同时遍历这两个部分时,我可以比较值并在需要时进行交换。
但是这个解决方案使用了两个消耗内存的指针。
可以在不使用任何内存的情况下完成吗?
由于是笔试,我不能要求澄清。
协助表示赞赏。谢谢。