数组右边第一个比当前元素大的数 - 单调栈

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]

 

使用方法: 单调栈

https://blog.csdn.net/zuzhiang/article/details/78134247

posted @ 2020-12-10 14:15  ChevisZhang  阅读(183)  评论(0编辑  收藏  举报