class Solution {
public int[] nextGreaterElements(int[] nums) {
Deque<Integer> st = new LinkedList<>();
st.addLast(0);
int[] res = new int[nums.length];
for(int i = 1;i < nums.length;i++){
while(st.size() > 0 && nums[st.peekLast()] < nums[i]){
res[st.pollLast()] = nums[i];
}
st.addLast(i);
}
for(int i = 0;i < nums.length;i++){
while(st.size() > 0 && nums[st.peekLast()] < nums[i]){
res[st.pollLast()] = nums[i];
}
}
while(st.size() > 0) res[st.pollLast()] = -1;
return res;
}
}
单调栈还是好懂啊!!
本文介绍了如何运用单调栈解决数组中查找每个元素下一个更大元素的问题。通过示例代码展示了一个高效的解决方案,代码中利用了栈的数据结构特性,确保了在遍历数组时能够快速找到每个元素的下一个更大值。
415

被折叠的 条评论
为什么被折叠?



