我在Given two arrays, find the number of elements greater中问了这个问题,然后我意识到我说的是完全错误的,所以我会再问一次。
我们有两个有限序列:X = {Xi},Y = {Yi},其中Yi是Xi的子序列。
让我们将它们写为单独的数组:[X1,X2,...,Xn],[Y1,Y2,...,Yk]其中n是X的长度,k是Y的长度,显然,因为Y是X的子序列,所以我们有n> = k。
例如
X=[1, 10, 5, 7, 11, -4, 9, 5]
y=[10, 7, -4, 9]
然后对于Y中的每个元素,我们要查找X中的第一个元素,其中1)出现在该元素之后,2)大于该元素。如果没有这样的元素,我们只使用-1
使用上面的示例
X=[1, 10, 5, 7, 11, -4, 9, 5]
y=[10, 7, -4, 9]
ans=[11, 11, 9, -1]
说明:
ans的第一个元素是11,因为只有11是第一个出现在10之后且在X中大于10的数字
ans的第二个元素也是11,因为11是X中第一个出现在7之后的数字。
ans的第三个元素也是9,因为9是出现在-4之后且都大于-4的第一个数字
第四个元素是-1,因为X中没有元素出现在9或之后。
问题是要解决O(N)时间复杂性的问题,其中N是X的长度。有人有想法吗?