标签:使用 代码 dma 一个 ++ tac csdn sem tps
找出数组中每个数右边第一个比它大的元素。
暴力解法
单调栈
使用栈结构。从前往后遍历数组每一位时,利用栈更新这一位之前每一位上的数的“右边第一个比它大的元素”。
public static int[] findMaxRightWithStack(int[] array) {
if(array == null) return null;
int n = array.length;
int[] ret = new int[n];
Stack<Integer> stack = new Stack<>();
stack.push(0);
int i = 1;
while(i < n) {
if(!stack.isEmpty() && array[i] > array[stack.peek()])
ret[stack.pop()] = array[i];
else
stack.push(i++);
}
while(!stack.isEmpty())
ret[stack.pop()] = -1;
return ret;
}
https://blog.csdn.net/smileiam/article/details/88732245
标签:使用 代码 dma 一个 ++ tac csdn sem tps
原文地址:https://www.cnblogs.com/sqqq/p/11716608.html