【发布时间】:2019-11-16 18:52:52
【问题描述】:
ArrayList<Integer> obj = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5));
Collections.rotate(obj,+1);
Collections.rotate(obj,+2);
如果我使用集合旋转 arrayList,它会旋转原始数组。 我需要旋转特定索引并将其保存在下一个索引/所需索引中而不影响原始索引?
如下所示,都在同一个数组中
input:
1
2
3
4
5
output:
1 5 4
2 1 5
3 2 1
4 3 2
5 4 3
现在我就是这样做的,如下
ArrayList<Integer> arraySec = new ArrayList<Integer>();
ArrayList<Integer> arrayThrd = new ArrayList<Integer>();
arraySec.addAll(obj);
Collections.rotate(arraySec,+1);
arrayThrd.addAll(arraySec);
Collections.rotate(arrayThrd,+1);
因此,对于超过 5 个数组的每个索引,我需要这么多数组。任何其他方式来旋转和返回它的副本而不是原始的
【问题讨论】:
-
您想垂直打印输入的所有旋转(不仅仅是 3 个),对吧?
-
您可以考虑使用自定义数据结构,虽然由一个数组支持,但具有多个旋转表示。如果您只关心例如 Iterable 接口,这可能是可行的。我可以发布更多作为答案,但对要解决的特定问题感到好奇:算法速度?减少内存占用?内存分配减少?你有能力为获得的利益而放弃什么?
标签: java arraylist collections