【发布时间】:2017-05-11 19:51:06
【问题描述】:
基本上我有一个这样的数组:[1, 2, 3, 9, 9, 4, 5, 6, 7]
我想将[1, 2, 3] 部分移动到[4, 5, 6, 7] 之前,如下所示:[9, 9, 1, 2, 3, 4, 5, 6, 7],同时保留数组其余部分的顺序。
一个简单的方法是分配一个临时数组以适应[1, 2, 3],同时我将数组的其余部分向左移动,但我想这样做而不消耗任何额外的内存。这可能吗?也许一些交换技术?
编辑:澄清一下,它是一个大的 STL 数组,额外的内存是指没有额外的大堆分配,临时变量很好。
EDIT2:我正在为任何给定数组和其中的任何范围寻找解决方案
【问题讨论】:
-
先展示你的作品。请给出原型。当你说没有额外的内存时,你会允许一个 for 循环有一个索引变量和一个交换变量,还是你的意思是“没有任意大的临时空间分配”?这是用于 std 容器还是 C 数组?