给定一个序列a[1], a[2], a[3] .... a[n],我必须为每个元素找到a[i]一个元素a[j],其中a[j]第一个元素是a[i - 1], a[i - 2], a[i - 3]....这样的a[j] < a[i]。
换句话说,我必须找到a[j]wherea[j] < a[i]和1<=j<i。但是如果有多个这样的元素,我必须选择最接近的一个a[i]。
例如,按以下顺序:
2 6 5 8
我必须为 6 和 5 输出 2,为 8 输出 5。
我知道这可以很容易地完成O(n^2),但是有没有更有效的方法呢?