c# - 如何移动列表中的数据

标签 c# algorithm linq list arraylist

我有以下情况,我想得到一个没有大量循环和切片的通用解决方案。

首先:

我初始化 N,通过它我计算列表大小(初始大小):

通过这个等式 N(N-1)/2..

假设我设置了 N = 5,因此初始大小将为 10

之后,我用一些方法用 1 和 0 填充列表。

像这样:

0 1 0 1 1 1 0 1 0 1

此列表根据 N 进行分段,其中分段为 (N-1)。

所以

  • 第一段是:0 1 0 1
  • 第二段是:1 1 0
  • 第三段是:1 0
  • 第四段是:1

[0 1 0 1] [1 1 0] [1 0] [1]

我想做的是,如果我再次输入任何数字作为输入 N:

通过适当的移位保持以前的数据

根据新的大小。例如如果 N=6 那么大小将是 15

所以我将有 5 个段而不是 4 个

我想要这样:

[0 1 0 1 0] [1 1 0 0] [1 0 0] [1 0] [0]

反之亦然如果我先输入 N = 7 并填充它。然后我输入 N = 4

我想做出正确的转变

最佳答案

有什么理由必须将它们放在一个列表中?看起来你在这里有一个 n 列表的列表,所以创建一个大小为 N 的列表,其中包含大小为 1 到 N 的列表。这样,当你增加 N 时,你只需将适当数量的 0 添加到每个列表并创建只有 0 的新列表。如果你减少 N 我不确定规则是什么但我怀疑通过比较你会删除适当数量的短列表,然后从其他列表中删除最后的元素。

就拥有单个数组列表而言,它不起作用,但我会说,它是存储您描述的数据的更好方法。无论如何,您始终可以很容易地从我描述的模型中获得扁平化列表...

关于c# - 如何移动列表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289082/

相关文章:

c# - .NET 框架库是否被视为用户定义的?

c# - 构造函数过度注入(inject)类型专注于收集数据

c# - 类型对象的 .NET MVC Action 参数

c - 正弦曲线的线性/非线性拟合

.net - 奇怪的 LINQ 异常

c# - 插入数据并用新数据刷新数据网格后关闭弹出窗口

javascript - 比较两个字符串数组 Javascript 的最快/最有效的方法

algorithm - 查找具有最小边交叉分区的图分区

c# - 获取列表中每个项目的对象集合(产品)

c# - 当我在 SQL Server 上插入 ~81192 个字符时,nvarchar(max) 字段为空