【发布时间】:2012-11-08 15:45:44
【问题描述】:
我有一个实现 IEnumerable<T> 的列表类。
Type T 是一个复杂的类,以字符串成员作为唯一标识符。但仅以 int 作为元素类型来解释就足够了。
我想将多个项目向左移动一步。
示例:
原始列表:0、1、2、3、4、5
现在所有粗体项目 (0,3,4) 都应该移到左边(尽可能远)。
结果列表:0, 1, 3, 4, 2, 5
有没有好的算法来做到这一点?也许只是使用 LINQ。
编辑:欢迎List<T> 列表的答案。我的班级有类似的方法。 (感谢 TylerOhlsen 的提示。)
Edit2:一个选定的项目不应传递另一个选定的项目。
【问题讨论】:
-
这不是真正的“尽可能”,你的意思是左移一位吗?
-
@lc。尽可能向左一步(例如
0不能移动) -
@lc。元素 0 未向左移动。这就是我的意思是“尽可能”。如果项目 1 也被标记为要移动(在项目 0 旁边),那么这个移动也将被忽略。
-
@Rawling 不会产生这样的结果:0、1、3、2、4、5?您希望列表看起来像这样 0, 3, 4, 1, 2, 5 还是 0, 1, 3, 4, 2, 5(您提供的那个)。在后一个中,为什么 1 不移动?
标签: c#