示例1:寻找下一个更大元素
输入数组:[2, 1, 2, 4, 3]
目标:找出每个元素右边第一个比它大的元素
数组: [2, 1, 2, 4, 3]
结果: [-1, -1, -1, -1, -1]
栈: 空 []
i = 0
步骤1:i = 0,当前元素 = 2
栈为空,直接入栈
栈: [0] (存储索引)
结果: [-1, -1, -1, -1, -1]
步骤2:i = 1,当前元素 = 1
栈顶索引0对应的值是2,2 > 1,不满足弹出条件
入栈索引1
栈: [0, 1]
结果: [-1, -1, -1, -1, -1]
步骤3:i = 2,当前元素 = 2
栈顶索引1对应的值是1,1 < 2,满足弹出条件!
弹出索引1,result[1] = 2 (当前元素)
现在栈顶索引0对应的值是2,2 == 2,不满足 < 条件(严格小于)
入栈索引2
栈: [0, 2]
结果: [-1, 2, -1, -1, -1]
步骤4:i = 3,当前元素 = 4
栈顶索引2对应的值是2,2 < 4,弹出!
result[2] = 4
栈顶索引0对应的值是2,2 < 4,弹出!
result[0] = 4
栈为空,入栈索引3
栈: [3]
结果: [4, 2, 4, -1, -1]
步骤5:i = 4,当前元素 = 3
栈顶索引3对应的值是4,4 > 3,不满足弹出条件
入栈索引4
栈: [3, 4]
结果: [4, 2, 4, -1, -1]
最终结果:[4, 2, 4, -1, -1]