C# 计算数组中元素的差
是否有方法计算数组中元素之间的差异,并使用LINQ检查差异是否大于1 如果你有一个数组{1,2,3,5,8,9},你想知道每个元素之间的差异是什么,并且只得到每个元素后面的元素,所以差异==1C# 计算数组中元素的差,c#,arrays,linq,c#-4.0,C#,Arrays,Linq,C# 4.0,是否有方法计算数组中元素之间的差异,并使用LINQ检查差异是否大于1 如果你有一个数组{1,2,3,5,8,9},你想知道每个元素之间的差异是什么,并且只得到每个元素后面的元素,所以差异==1 使用LINQ可以做到这一点吗?您可以使用一些技巧 给予 您希望如何处理最后一个元素 应该包括9个吗?是否应包括{1,2,3,5,8}中的最后一个元素?您可以使用使用索引的.Where重载-当然,这也使用了数字是带有索引运算符的数组这一事实: int[] a = { 1, 2, 3, 5, 8, 9
使用LINQ可以做到这一点吗?您可以使用一些技巧 给予 您希望如何处理最后一个元素
应该包括9个吗?是否应包括
{1,2,3,5,8}
中的最后一个元素?您可以使用使用索引的.Where
重载-当然,这也使用了数字是带有索引运算符的数组这一事实:
int[] a = { 1, 2, 3, 5, 8, 9 };
var b = a.Where((item, index) =>
{
if(index + 1 == a.Length)
return false;
return item - a[index + 1] == -1;
}).ToArray();
int[] numbers = new[] { 1, 2, 3, 5, 8, 9 };
int[] followNumbers = numbers.Where((x, idx) =>
(idx >=1 && numbers[idx-1] == x-1
|| (idx < numbers.Length-1
&& numbers[idx+1] == x+1) ))
.ToArray();
int[]number=new[]{1,2,3,5,8,9};
int[]followNumbers=数字。其中((x,idx)=>
(idx>=1&&numbers[idx-1]==x-1
||(idx
编辑以捕获作为连续数字“孤岛”一部分的所有数字,孤岛大小>1-这意味着您必须向前和向后查看每个数字,以确定前一个数字或后一个数字是否连续
在本例中,输出是
{1,2,3,8,9}
。这将永远不包括最后一个b={1,2,8};//所以,是的,最后一个会被包括在内。你的例子中的8,9应该被包括在内吗?{1,2,3}应该返回什么?和{1,2,2,3}?例如,第一个可以返回{1,2,3}或{2,3}或{1,2,2,3}。第二个{1,2,2,3}或{2,3}…我只希望元素连续地跟随在一起这看起来不错,我只希望输出数组包含连续地跟随在一起的数字…@Tony:那么这个解决方案对你有效,或者你期望不同的结果?@Tony:对不起,有一个
int[] a = { 1, 2, 3, 5, 8, 9 };
var b = a.Where((item, index) =>
{
if(index + 1 == a.Length)
return false;
return item - a[index + 1] == -1;
}).ToArray();
int[] numbers = new[] { 1, 2, 3, 5, 8, 9 };
int[] followNumbers = numbers.Where((x, idx) =>
(idx >=1 && numbers[idx-1] == x-1
|| (idx < numbers.Length-1
&& numbers[idx+1] == x+1) ))
.ToArray();