题目:
给定数组Arr[n],对于其中的每个元素Arr[i](0=<i<n),在Arr[0...i-1]中找到元素Arr[k],Arr[k]满足Arr[k]>Arr[i],并且i-k值最小(即最靠近)。
要求O(n)时间内找出Arr中所有元素对应的Arr[k]的位置。
ex,
src[]: 9, 5, 2, 4, 7
dst[]: -1,0, 1, 1, 0
思路:
借助于栈来实现,从后向前遍历数组,while栈顶元素小于当前遍历的数组元素,则更新dst,并pop。
参见下面代码
代码: