给定两个数组,找到下一个更大的元素

时间:2019-05-07 23:45:36

标签: arrays algorithm

我在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的长度。有人有想法吗?

0 个答案:

没有答案