我有一个大小为N的数组A.我想制作一个大小为N * N的新数组,这样我的新数组B将如下,时间复杂度小于Ω(N2):
For A[0..N-1] ,
B= {A[0]+A[0],,A[0]+A[1], A[0]+A[2], ……., A[1]+A[0], A[1]+A[1],A[1]+A[2], ……., A[N-1]+A[0], A[N-1]+A[1],..., A[N-1]+A[N-1]}.
示例:
A={1,2}
序列B为{ A1+A1, A1+A2, A2+A1, A2+A2 } = {2,3,3,4}.
请提供相应的代码。
答案 0 :(得分:2)
这不可能。
填充大小 N 2 的数组至少涉及 N 2 写入,因此它需要Ω( N 2 )时间。
答案 1 :(得分:0)
问题描述示例不一致。
您提供了:
For A[0..N-1] ,
B= {A[0]+A[1], A[0]+A[2], ……., A[1]+A[0], A[1]+A[2], ……., A[N-1]+A[0], A[N-1]+A[1],..., A[N-1]+A[N-1]}
如果您观察到,该号码不会被添加到自身。 A [0]似乎没有添加A [0]而A [1]似乎没有添加A [1]。但同样,A [n-1]似乎最后添加了A [n-1]。我认为按照这种模式应该是A [n] + A [n-1]。此外,在这种情况下,B的大小将是N *(N-1)。
同样,您提供的示例与问题描述不匹配。在您的示例中,您似乎将数字添加到自身。
A={1,2}
The sequence B is { A1+A1, A1+A2, A2+A1, A2+A2 } = {2,3,3,4}.
请更新问题并更正示例或问题说明,如果您可以提供问题的文字说明以及数字示例说明,则会有所帮助。