gpt4 book ai didi

c# - 如何检查 int 类型的索引序列是否连续?

转载 作者:行者123 更新时间:2023-12-02 12:27:47 28 4
gpt4 key购买 nike

我有一个 Column 类,它具有 int 类型的 Index 属性。

如果我有一个 Column 对象的集合,我正在寻找一种方法来测试它们的索引是否连续。我所说的连续是指索引彼此相邻,因此如果按值排序,它们与下一个和上一个索引的距离为 1。

可以有任意数量的column对象。

例如:

  • 10,11,12,13 => 正确

  • 3,5,7 => 假

  • 1,2,4 => 假

编辑

虽然这些示例是有序索引,但我想要一个采用无序索引集的解决方案。

我确信可能有一种简洁的 Linq 方法可以解决这个问题,但我看不到它。

用代码表示:

public class Column 
{
public int Index { get; set; }
}

class Program
{
static void Main(string[] args)
{
// Example set of columns 1
List<Column> columns1 = new List<Column>()
{
new Column(){Index = 10},
new Column(){Index = 11},
new Column(){Index = 12},
new Column(){Index = 13},
};

// Example set of columns 2
List<Column> columns2 = new List<Column>()
{
new Column(){Index = 3},
new Column(){Index = 5},
new Column(){Index = 7},
};

// Example set of columns 3
List<Column> columns3 = new List<Column>()
{
new Column(){Index = 1},
new Column(){Index = 2},
new Column(){Index = 4},
};

var result1 = IndicesAreContiguos(columns1); // => true
var result2 = IndicesAreContiguos(columns2); // => false
var result3 = IndicesAreContiguos(columns3); // => false
}

public bool IndicesAreContiguos(IEnumerable<Column> columns)
{
// ....???
}

}

最佳答案

为此您不需要 LINQ

public bool IsContig(int[] arr) {
for(int i = 1; i<arr.Length;i++)
if(arr[i] - arr[i-1] != 1)
return false;
return true;
}

LINQ 是一把锤子,但并非所有问题都是钉子

(编辑:要接受一组无序索引,然后考虑首先对数组进行排序的修改。同样,LINQ 不是必需的;Array.Sort 可以工作)

如果序列 1,2,3,2,3,2,3,4,3,2,3,4,5,4,5 是连续的,则改进 IF 以允许结果为 -1也是

关于c# - 如何检查 int 类型的索引序列是否连续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60861535/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com