in_ = [8,2,5,4,3,9,7,2,5]
def right_num(in_):
stack = [0]
res = [-1]*len(in_)
i = 1
while i<len(in_):
if stack and in_[i] > in_[stack[-1]]:
res[stack.pop()] = in_[i]
else:
stack.append(i)
i+=1
return res
print(right_num(in_))
# [9, 5, 9, 9, 9, -1, -1, 5, -1]
字节跳动面试题
2. 求一个无序数组每一个元素的右侧第一个大于它的元素(否则-1),返回一个新数组。
如输入[6,2,1,4,8,5]
输出[8,4,4,-1,-1]
使用方法: 单调栈