【发布时间】:2018-01-02 23:37:23
【问题描述】:
假设我们有两个长度相等的整数数组,a_1, ..., a_n 和 b_1, ..., b_n。对于任何给定的索引对i 和j 与1<=i<j<=n,我们需要找到a_k, ..., a_{l-1}, b_l, ..., b_{j-i+k} 与0<=k<=n-j+i 和l 形式的任何序列的最小值的最大值可以是j-i+k+1,即该序列纯粹来自数组a。当k=0时,序列纯粹来自数组b。
我们希望非常高效地对所有 i 和 j 对执行此操作。
例子,给定
`a=[3,2,4,1]` and `b=[4,6,1,3]`
when `i=1, j=3`, the sequence can be
`[3,2,4]`, min is 2
`[3,2,1]`, min is 1
`[3,6,1]`, min is 1
`[2,4,1]`, min is 1
`[2,4,3]`, min is 2
`[2,1,3]`, min is 1
`[4,6,1]`, min is 1
`[6,1,3]`, min is 1
所以这个输入的最大值是 2。
有没有什么好方法可以高效运行?
【问题讨论】:
-
这似乎只依赖于 j-i,而不是独立于 i 和 j。
-
当 k=0 时,序列从 a_0 开始,但您的索引从 1 开始。
-
k=0 按照惯例意味着
a中的任何元素都不会出现在所选序列中。 :) -
这看起来很有趣,但我不明白这个问题。您能否(半)正式定义确切预期的输入和输出是什么?请提供一个示例,其中每个数组包含不同的数字。 (首先,我什至不明白
a_k和a_l是什么,如果k=0,那么我们不包括a_0;然后,我也很困惑是否给定一次一对(i,j),或者我们应该处理所有(i,j)s 以及如何作为解决方案。)
标签: algorithm