1

假设我有一个序列和一个列表列表:

[“A”“B”“C”“D”“E”][[:1:2][:3:4:5]]

我想使用序列来标记列表列表的每个元素:

[[“A”:1“B”:2] [“C”:3“D”:4“E”:5]]

我的算法应该是什么?


编辑:所以堆栈溢出可以给出的最佳答案是制作一个副本然后对其进行变异,并且只有在数据是特定形状时才有效?

我接受了这个答案,因为它是正确的并且是唯一给出的答案,但我们肯定可以做得更好吗?

4

1 回答 1

1

应该相当简单。遍历您的子列表元素,同时在序列中移动索引。如果列表比序列长,您可以使用模数将移动索引设置为序列到达末尾时的开头。

int index = 0

for(sublist in list) {
    for(element in sublist) {
        element.label = sequence[index++]
        index = index modulo length_of(sequence)
    }
}

如果您的子列表也可以有子列表,那么您可能必须使用递归方法。

于 2013-01-07T14:50:51.733 回答