C# 从整数数组/整数列表中删除序列号
我正在生成一个数字列表,比如100 101 102 103 110 111 112 130 131 132,我想删除在下一个数字之前顺序排列但有特定公差的数字 因此,以公差3为例,我的输出将为 100 102 110 112 130 132 公差值必须可调 ADRS是我的int列表, ADRSC是我清洁后的字符串列表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
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
?如果您正在更改其含义,可以修改该代码,使其不从公差中减去一个。请具体说明规则,并提供详细信息(在你最初的问题中)额外的示例输入和预期输出给出了该规则的示例。此外,我不知道你在上面的第一条评论中说了什么。