【发布时间】:2017-04-21 15:10:39
【问题描述】:
我不是在寻找任何代码或为我做任何事情。我需要一些帮助才能朝着正确的方向开始,但不知道如何去做。如果有人可以提供一些有关如何解决这些问题的资源,我将不胜感激。我坐在我的笔记本上,在设计一种可以做我想做的事情的算法时遇到了麻烦。
我大概可以做到:
foreach element in array1
foreach element in array2
check if array1[i] == array2[j]+x
我相信这对正向和反向序列都适用,对于倍数只需检查array1[i] % array2[j] == 0。我有一个包含 int 数组的列表,并且得到了list[index](对于array1)和list[index+1] 对于array2,但是这个解决方案可能会变得复杂而冗长,特别是对于大型数组和这些数组的大型列表.因此,我正在寻找更好的解决方案。
我正在尝试提出一种算法来查找不同数组中的序列号。
例如:
[1, 5, 7] 和 [9, 2, 11] 会发现 1 和 2 是连续的。
这也适用于多个数组中的多个序列。因此,如果有第三个数组[24, 3, 15],它还将在该序列中包含3,并继续下一个数组,直到没有与last sequential element + 1匹配的数字。
它还应该能够在数组之间找到多个序列。
例如:
[1, 5, 7] 和 [6, 3, 8] 会发现 5 和 6 是连续的,7 和 8 也是连续的。
我也有兴趣寻找反向序列。
例如:
[1, 5, 7] 和 [9, 4, 11] 将返回 5 和 4 是反向顺序的。
全部示例:
[1, 5, 8, 11] 和 [2, 6, 7, 10] 将返回 1 和 2 是顺序的,5 和 6 是顺序的,8 和 7 是反向顺序的,11 和 @987654@53是反向顺序的。
也可以重叠:
[1, 5, 7, 9] 和 [2, 6, 11, 13] 将返回 1 和 2 顺序,5 和 6 顺序以及 7 和 6 反向顺序。
我还想扩展它以检查差异为x 的数字(以上示例检查差异为1)。
除了所有这些(尽管这可能是一个不同的问题),我还想检查倍数,
示例:
[5, 7, 9] 和 [10, 27, 8] 将返回 5 和 10 作为倍数,9 和 27 作为倍数。
和数字相同的地方。
示例:
[3, 5, 7] 和 [13, 23, 25] 将返回 3 和 13 和 23 具有相同的个位。
【问题讨论】:
-
先对数组进行排序,这样更容易找到序号
标签: arrays algorithm computer-science