【发布时间】:2019-06-27 22:27:05
【问题描述】:
我正在寻找一种更快、更准确的方法来检查序列:
List<int> sequence = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7 … 41}
private bool IsSequential(List<int> sequence)
{
int S = sequence[0];
int T = sequence[sequence.Count- 1];
List<int> Possible = Enumerable.Range(S, T).ToList();
List<int> Except = sequence.Except(Possible).ToList();
if (Except.Count == 0)
return true;
else
return false;
}
如果列表相同,我的代码返回 1,我有某种计数问题?
我想知道是否有更好的方法来检查整数序列:200、201、202...等等。
某些序列可能乱序:200、210、203、204...我需要确定这个问题。
谢谢
【问题讨论】:
-
如何定义“更好”?快点?更少的内存密集型?更容易编码?少写几行?
-
202,201,200 是否也被认为是连续的?比如,我们需要确定方向吗?
-
@HimBromBeere - 也许是 Linq 中的 One-Liner,或者更简洁的代码实现,你会如何让它变得更好?
-
或者,使用
for循环并将索引(可能添加初始值)与列表条目进行比较。如果它们不匹配,则不是顺序的。一定要测试是否有int.MaxValue然后int.MinValue。