C# 从整数数组/整数列表中删除序列号

C# 从整数数组/整数列表中删除序列号,c#,.net,C#,.net,我正在生成一个数字列表,比如100 101 102 103 110 111 112 130 131 132,我想删除在下一个数字之前顺序排列但有特定公差的数字 因此,以公差3为例,我的输出将为 100 102 110 112 130 132 公差值必须可调 ADRS是我的int列表, ADRSC是我清洁后的字符串列表 for (int v = 0; v <= ADRS.Count - 2; v++) { if (v == 0) //adds first number

我正在生成一个数字列表,比如100 101 102 103 110 111 112 130 131 132,我想删除在下一个数字之前顺序排列但有特定公差的数字

因此,以公差3为例,我的输出将为 100 102 110 112 130 132

公差值必须可调

ADRS是我的int列表, ADRSC是我清洁后的字符串列表

for (int v = 0; v <= ADRS.Count - 2; v++)
{
    if (v == 0) //adds first number
        ADRSC.Add(ADRS[v].ToString());

    if (ADRS[v]-(int.Parse(ADRSC.Last())) > 3) 
    {
        ADRSC.Add(ADRS[v].ToString());
    }
}
for(intv=0;v3)
{
ADRSC.Add(ADRS[v].ToString());
}
}
简言之: 我想删除中间的数字,它们之间的差值小于3

这起作用了

 adrCache = Nums.First();
        for (int x=1; x < Nums.Count-2; x++)
        {
            if ((Nums[x+1] - adrCache) <= 4)
            {
                adrCache = Nums[x+1];
                Nums[x] = 0; //ill then just remove all zeros
            }
            else {
                adrCache = Nums[x];
            }

        }
adrCache=Nums.First();
对于(int x=1;x如果((Nums[x+1]-adrCache)这里有一个你想要的镜头,但我不太清楚这个问题:

public static List<int> RemoveSequential(List<int> items, int tolerance)
{
    if (items == null || items.Count < 2) return items;
    var result = new List<int> {items.First()};
    var sequenceCount = 0;

    for(int i = 1; i < items.Count; i++)
    {
        if (Math.Abs(items[i] - items[i - 1]) == 1)
        {
            sequenceCount++;
            if (sequenceCount == tolerance - 1)
            {
                result.Add(items[i]);
            }
        }
        else
        {
            sequenceCount = 0;
            result.Add(items[i]);
        }
    }

    return result;
}
publicstaticlist removesequence(列表项,整数容差)
{
如果(items==null | | items.Count<2)返回项目;
var result=新列表{items.First()};
var sequenceCount=0;
对于(int i=1;i
用法如下所示:

public static void Main(string[] args)
{
    var input = new List<int> {100, 101, 102, 103, 110, 111, 112, 130, 131, 132};
    var output = RemoveSequential(input, 3);

    Console.WriteLine($"Input:  {string.Join(", ", input)}");
    Console.WriteLine($"Output: {string.Join(", ", output)}");

    GetKeyFromUser("\nDone! Press any key to exit...");
}
publicstaticvoidmain(字符串[]args)
{
var输入=新列表{100、101、102、103、110、111、112、130、131、132};
var输出=RemoveSequential(输入,3);
Console.WriteLine($”输入:{string.Join(“,”,输入)}”);
Console.WriteLine($”输出:{string.Join(“,”,Output)}”);
GetKeyFromUser(“\n完成!按任意键退出…”);
}
输出


如果您想从列表中删除数字,您需要反向迭代,或者复制新列表中的项目,然后迭代新列表并从第一个列表中删除该项目,如果您以正常方式从列表中删除该项目,您将收到索引超出范围的异常公差3表示介于两者之间?因为102-100是2,所以我假设您是n incluseve范围内的元素数为3,对吗?是否总是有3个(或尽可能多的公差)输入列表中的后续元素?或者公差为3的100、101、102、103是否也有效?请仅对有关IDE本身的问题使用IDE标记,而不是一般编程问题。请确保在使用标记之前阅读使用指南。您的陈述和示例有点难以理解。您声明你想“删除连续的数字”,但在一系列的
100101102103
中,您将删除
101
103
。这些数字不是顺序的。当前,它输出1714218171421917142201714221171422217142231714224171422717142291714246171424717142481714249171425171425171425171425511714257171426017142611714262171426317142641714265 1714266 1714269 1714271,我希望它也显示1714218,1714229,1714246,1714271,只有2个值,中间没有任何值,除非大于3谢谢你的回答。根据你的例子,输出应该是100 103 110 112 130 132:)在你的问题中,你说,“因此,以3为例,我的输出将是100 102 110 112 130 132”。在您评论中的新输出中,当该数字连续但小于
130
中的
3
时,什么规则规定它应该输出
132
?如果您正在更改其含义,可以修改该代码,使其不从
公差中减去一个。请具体说明规则,并提供详细信息(在你最初的问题中)额外的示例输入和预期输出给出了该规则的示例。此外,我不知道你在上面的第一条评论中说了什么。