在面试中我被问到了以下问题(不幸的是,我找不到比N^2更好的答案)
对于大小为N的无符号整数数组arr
,对于每个元素(在索引i
中),我应该返回索引j
(j>i)中的一个元素,使得arr[j] > arr[i]
。也就是说,我应该返回一个数组res,在其中res[i]具有一个arr[j],j>i,arr[j]>arr[i],其中j是所有满足arr[k] > arr[i]的索引k中最小的一个。
例如:
arr[] = {3,1,4,2,5,7};
res[] = {2,2,4,4,5,-1};//-1 says no such index
有没有更好的时间复杂度的方案呢? 谢谢。