有很多相关的问题,但我正在寻找特定于我的情况的解决方案。有一个包含(通常)14个整数的数组,每个整数的范围在1到34之间。如何快速判断特定静态列表中的每个整数是否至少出现一次在这个数组中?
供参考,我目前正在使用以下代码,它被编写得尽可能接近规范,因此肯定可以大大改进:
if (array.Count < 13) {
return;
}
var required = new int[] {
0*9 + 1,
0*9 + 9,
1*9 + 1,
1*9 + 9,
2*9 + 1,
2*9 + 9,
3*9 + 1,
3*9 + 2,
3*9 + 3,
3*9 + 4,
3*9 + 5,
3*9 + 6,
3*9 + 7,
};
IsThirteenOrphans = !required.Except (array).Any ();
所需列表不是动态的,即在运行时它将始终保持不变。使用Linq是可选的,主要方面是性能。
编辑:
- 输入数组未排序。
- 输入值可能出现多次。
- 输入数组将包含至少14个项目,即比所需数组多1个。
- 只有一个必需的数组,并且它是静态的。
- 所需中的值是不同的。
- 您可以假设直方图创建是便宜的。
required
包含重复项,但是对于某个整数,array
中没有重复项,则它将通过你的测试。 - CodesInChaosrequired
不包含重复项。 - mafu