讨论/题目交流/除了穷举,这道题还有什么好的解法?/
除了穷举,这道题还有什么好的解法?

有四百万左右的一个二维数组,包含一些特征值。比如[9,10,11,12,35,54,60,61],里面的数字最小是0,最大是64,已做排序且不重复。然后给定多个条件,比如[9,40,56],这个条件数组长度为n(n<=64),还有一个限定条件[1,2],长度为m(m<n),代表条件数组与查找数组的交集为1或者2则满足条件。

展开讨论
共 3 个讨论

说来说去,题目问题是什么

1

有序,就用二分。话说题目要求什么?

@pengxurui
@solituderain

例如有这样几组数据,
[1,2,3,4,5,6,7,8]
[3,4,5,6,7,8,9,10]
[3,4,5,11,12,13]

给定条件,
[3,4,5,6],[2,3]
[4,5,6,7],[1,2]
代表上面的数据,要在[3,4,5]这个数组中包含2个或3个数字,且[4,5,6]这个数组包含1个或2个数字,目前用的是直接循环,

[1,2,3,4,5,6,7,8]跟[3,4,5,6]交集为4个,不符合;
[3,4,5,6,7,8,9,10]跟[3,4,5,6]交集为4个,不符合;
[3,4,5,11,12,13]跟[3,4,5,6]交集为3个,跟[4,5,6,7]交集为2个,符合;

结果输出
[3,4,5,11,12,13]

但是上面的样例数据接近四百多万个...for循环速度很慢(2分钟左右),可否有更好的思路处理?