¿Cuántos pasos debe ir el número en la posición i-ésima de la matriz a la derecha para encontrar un número mayor que él?


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;
     }
}

Supongo que te gusta

Origin www.cnblogs.com/wen-/p/12713900.html
Recomendado
Clasificación