首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >获取序列的所有子序列

获取序列的所有子序列
EN

Stack Overflow用户
提问于 2019-05-08 18:28:53
回答 2查看 554关注 0票数 -5

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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语句的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-08 18:50:16

假设您的源是一个List (如果不是,请转换为List),那么您可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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扩展:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static class ArrayExt {
    public static IEnumerable<T> Segment<T>(this T[] src, int start, int count) => new ArraySegment<T>(src, start, count);
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var ans = Enumerable.Range(0, src.Length).SelectMany(start => Enumerable.Range(1, src.Length-start).Select(count => src.Segment(start, count).ToArray()));

但是List通常是首选的。

票数 4
EN

Stack Overflow用户

发布于 2019-05-13 23:47:44

尽管NetMage的解决方案是正确的,但我最终还是编写了自己的扩展方法,它使用Array.Copy来提高性能:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/// <summary>
/// Get all subsequences of the given sequence.
/// {1,2,3}=>{{1,2},{1,2,3},{2,3}}
/// </summary>
public static T[][] GetAllSubsequences<T>(this IEnumerable<T> collection)
{
    var list = (collection as T[]) ?? collection.ToArray();
    return list.SelectMany((x, i) => list.Skip(i).Select((z, j) =>
          {
              var arr = new T[j + 1];
              Array.Copy(list, i, arr, 0, j + 1);
              return arr;
          })).ToArray();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56046975

复制
相关文章
SQL 获取定长连续子序列
savior 表有两个字段,id 是主键,设置了自动递增;status 表示状态,它只有 0/1 两种状态。
白日梦想家
2020/12/14
9390
子序列解题模板:最长回文子序列
首先,子序列问题本身就相对子串、子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举都不容易,更别说求解相关的算法问题了。
labuladong
2021/09/23
4250
子序列的和
输入两个正整数n<m<10 6 ,输出 ,保留5位小数。输入包含多组数据, 结束标记为n=m=0。提示:本题有陷阱。
杨鹏伟
2022/05/05
3410
1️⃣ 序列获取(1):DNA序列获取
已经无法打开 具体请参考文章https://www.ncbi.nlm.nih.gov/pmc/articles/PMC29767/
Y大宽
2019/01/28
1.2K0
1️⃣ 序列获取(1):DNA序列获取
子序列的和
输入两个正整数 n< m < 10^6, 输出 1/n^2 + 1/(n+1)^2 + ... + 1/m^2 ,保留5位小数。
Vincent-yuan
2020/05/19
3830
1️⃣ 序列获取(2):RNA序列获取
虽不编码蛋白质,但是参与包括染色质结构重建,基因表达层面的转录和翻译调控,亚细胞位置等调控。主要来自于
Y大宽
2019/01/28
1.4K0
子序列问题
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
羽翰尘
2020/08/10
5220
判断子序列
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ≈ 500,000),而 s 是个短字符串(长度 <= 100)。
零式的天空
2022/03/21
2100
子序列长度 🧩
有 N 个正整数组成的一个序列。给定一个整数sum,求长度最长的的连续子序列使它们的和等于sum,并返回此子序列的长度。如果没有满足要求的序列,则返回-1。
梦想橡皮擦
2023/03/14
9430
排序子序列
牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列. 如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2 输入描述: 输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
AI那点小事
2020/04/18
7290
1️⃣序列获取(3):蛋白质序列获取
1 NCBI Protein database related information可以查看非常详细的各种相关信息 2 EXProt :database for EXPerimentally ve
Y大宽
2019/01/28
5160
[GoogleInterview]连续子序列问题
本文为 Clouder 原创文章,原文链接为 https://www.codein.icu/gci-subarray/,转载时请将本段放在文章开头显眼处。如进行了二次创作,请明确标明。
Clouder0
2022/09/23
6800
[GoogleInterview]连续子序列问题
最长公共子序列(稀疏序列)nlogn解法
首先这种做法只能针对稀疏序列, 比如这种情况: abc abacabc。 会输出5 ,,,,就比较尴尬, 1 #include<iostream> 2 #include<cstdio> 3 #i
attack
2018/04/12
9080
最长公共子序列(稀疏序列)nlogn解法
Leetcode|线性序列|516. 最长回文子序列
【dp数组含义】:s[i, j]的子序列最长为dp[i][j] 【状态转移方程】:
SL_World
2021/09/18
2780
115. 不同的子序列
一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,”ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)
张伦聪zhangluncong
2022/10/26
3980
做oj好还是做leetcode好_序列的子序列
给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量。
全栈程序员站长
2022/09/22
7640
做oj好还是做leetcode好_序列的子序列
最大的子序列和问题
http://blog.csdn.net/zhutulang/article/details/7505785
bear_fish
2018/09/20
1.4K0
最大的子序列和问题
动态规划:不同的子序列
字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)
代码随想录
2021/04/07
4490
动态规划:不同的子序列
最大子序列的和_子序列和最大值
https://leetcode-cn.com/problems/maximum-subarray/description/
全栈程序员站长
2022/08/03
3460
最大子序列的和_子序列和最大值
点击加载更多

相似问题

获取所有子序列的列表

15

获取numpy数组的所有子序列

411

F#获取序列的子序列

11

最长公共子序列打印所有子序列

33

探索所有的子序列

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文