Dada una matriz de enteros, devuelve una matriz. El i-ésimo número en la matriz devuelta es el número de pasos al menos a la derecha de la posición i-ésima en la matriz original para encontrar un número mayor. Si no se encuentra o ya está en la posición más a la derecha, se establece en -1.
import
java.util.*;
public
class
Main{
public
static
void
main(String[] args){
Scanner in =
new
Scanner(System.in);
int
n = in.nextInt();
int
[] d =
new
int
[n];
for
(
int
i=
0
; i<n; i++){
d[i] = in.nextInt();
}
int
[] ret = help(d);
StringBuilder sb =
new
StringBuilder();
for
(
int
i=
0
; i<ret.length; i++){
sb.append(ret[i]).append(
"\n"
);
}
System.out.print(sb.toString());
}
private
static
int
[] help(
int
[] nums){
int
[] ret =
new
int
[nums.length];
Arrays.fill(ret, -
1
);
Stack<Integer> s =
new
Stack<>();
for
(
int
i=
0
; i<nums.length; i++){
while
(!s.isEmpty() && nums[i] > nums[s.peek()]){
int
top = s.pop();
ret[top] = i - top;
}
s.push(i);
}
return
ret;
}
}