我们有两对数字。第一对由 组成,a1, a2
第二对由 组成b1, b2
。我们希望确定 的任何元素a
是否在 中b
,反之亦然。这很简单:
int a1, a2, b1, b2;
// is it possible to do better than this:
boolean hasOverlap = a1 == b1 || a1 == b2 || a2 == b1 || a2 == b2;
问题是,理论上是否可以更快地做到这一点?也许通过巧妙地使用按位算术?
为清晰而编辑:为了明确起见,假设我们正在尝试优化一个 java 程序。
奖金问题
假设我们有任意数量的对,而不是只有两对。您可以想象一个由 100 个长度为 2 的数组组成的数组。如果该对包含出现在列表中另一对中的元素,那么从该列表中删除任何对最有效的是什么?
例如:[[1,2], [3,4], [2,5]]
将减少为[[3,4]]