我想把一些IEnumerable的值“折叠”在一起,使相邻的相同元素折叠成一个元素。
我无法想到更好的描述问题的方式,除了举个例子:
数组[0,0,2,0,1,1,2,2,2,1,0,0,2,1,1,0,1,1,1]应该变成[0,2,0,1,2,1,0,2,1,0,1]
在我的用例中,这需要在关键循环中发生,因此必须尽可能快。我可以循环遍历数组并检查每个元素与前一个元素是否重复,如果是,则删除,但我希望有更快的方法。
我的使用仅限于相对较短的数组(<100个元素),并且仅使用int,但通用解决方案将不胜感激。
编辑:如下面指出的,问题基本上是O(n)复杂度,但我希望一些linqy的东西能够击败我的(可能笨拙的)实现。
我无法想到更好的描述问题的方式,除了举个例子:
数组[0,0,2,0,1,1,2,2,2,1,0,0,2,1,1,0,1,1,1]应该变成[0,2,0,1,2,1,0,2,1,0,1]
在我的用例中,这需要在关键循环中发生,因此必须尽可能快。我可以循环遍历数组并检查每个元素与前一个元素是否重复,如果是,则删除,但我希望有更快的方法。
我的使用仅限于相对较短的数组(<100个元素),并且仅使用int,但通用解决方案将不胜感激。
编辑:如下面指出的,问题基本上是O(n)复杂度,但我希望一些linqy的东西能够击败我的(可能笨拙的)实现。
null
作为比较器的默认值,而不是创建第二个重载函数。 - Servy