获取一个序列的所有子序列

迭戈

我有一个数组,我需要所有可能的子数组(段或子序列),但空的除外。不是幂集,因为每个子数组只有在输入数组中连续的元素。

例如,对于 input new int[]{1,2,3},输出将是:

 new int[]{
   new int[]{1},
   new int[]{1,2},
   new int[]{1,2,3},
   new int[]{2},
   new int[]{2,3},
   new int[]{3}
 }

请注意,这{1,3}不存在,因为我不想要所有子集(幂集),只想要所有子序列。

我更喜欢使用单个 LINQ 语句的解决方案。

网络魔法师

假设您的来源是 a List(如果不是,则转换为 a List),那么您可以执行以下操作:

var srcl = src.ToList();
var ans = Enumerable.Range(0, srcl.Count).SelectMany(start => Enumerable.Range(1, srcl.Count-start).Select(count => srcl.GetRange(start, count)));

使用自然ArraySegment扩展:

public static class ArrayExt {
    public static IEnumerable<T> Segment<T>(this T[] src, int start, int count) => new ArraySegment<T>(src, start, count);
}

你可以让它返回一个数组数组:

var ans = Enumerable.Range(0, src.Length).SelectMany(start => Enumerable.Range(1, src.Length-start).Select(count => src.Segment(start, count).ToArray()));

List通常是首选。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用一个 python 查询获取所有时间序列 Influxdb 条目?

获取所有子序列的列表

熊猫仅保留一个专有子序列(groupby order保留该子序列)

一种在另一个序列中找到一个序列的所有索引的pythonic方法?

从numpy数组中删除除最后一个非零序列以外的所有序列

如何在一个特定的序列化中序列化除特定属性以外的所有属性

基于另一个表的序列从另一个获取序列字段

XMLSerializer - 为什么在序列化时有一个额外的子层?

SQL从一个序列顺序中按多列选择所有记录

Dropzone使用序列化将所有内容上传到一个阵列中

如何找到数组中连续零序列的所有第一个索引?

C#XML将所有属性反序列化为一个集合

XML序列化仅将所有内容写入一个文件

发现一个整数序列,其中除了一个值之外的所有值都被 NA 屏蔽

编写一个包含序列中除一个变量之外的所有变量的循环

生成所有唯一的k子序列

SQL ORDER BY一个序列列,然后是组中的所有记录,然后恢复下一个序列

获取大序列的下一个值并插入

从序列SQL获取下一个值

我们如何保证一个由一个最长的递增子序列和一个最长的递减子序列组成的双音序列?

如果出现序列,则系统-Verilog断言中会出现一个子序列

Python - 在有序列表中的两个元素之间创建一个新的子列表

具有至少一个元素的F#序列

我的下一个序列代码有问题

查找恰好有一个偏差的匹配序列

使@GeneratedValue 开始一个具有特定值的序列

是否有一个函数可以获取熊猫数据帧时间序列上两个值之间的差异?

如何获取我的JavaScript数组的所有子字符串(连续的子序列)?

如何在一个有序列表中插入一个新元素并移动Java中的所有其他对象?