毎日の気温がこの日よりも高い日数を求めます

1.従来の考え方は、2つのポインタを使用して、1つは判断する要素を指し、もう1つはこの要素より大きい要素インデックスを見つけることです。

2、ただしこのアルゴリズムの時間複製の程度はO(n ^ 2)

3.このような問題を解決するためにスタックを使用できます

4.便利な要素。要素がスタックの一番上の要素よりも小さい場合、要素はスタックにプッシュされます。

5.要素がスタックの一番上の要素より大きい場合、一番上の要素と現在の要素の間の距離が計算されます

6、時間の複製の程度はO(n)

 

import java.util。* ;

public  class Client {
     public  static  void main(String [] args){
                        //   0 1 2 3 4 5 6 7 
        int [] templates = {23,24,25,21,19,22,26,23 };
        int [] wendu = wendu(templates);
        System.out.println(Arrays.toString(wendu));
    }

    static  int [] wendu(int [] templates){
         int [] result = new  int [templates.length];
        スタック <整数> =スタック新しい新しいスタック<>(); // 配列の添字の保存
        のためのint型 I = 0; I <templates.length; I ++ ){
             IF (stack.isEmpty()){
                stack.push(i);
            } その他{
                整数ピーク = stack.peek();
                if(templates [i] <= templates [peek]){
                    stack.push(i);
                }  { // 大トップ要素より
                    ながら(!Stack.isEmpty()){
                        整数インデックス = stack.pop();
                        if(templates [i]> templates [index]){
                            result [index] = i- インデックス;
                        } その他{
                            stack.push(index);
                            休憩;
                        }
                    }
                    stack.push(i);
                }
            }

        }

        結果を返す;
    }

}

 

おすすめ

転載: www.cnblogs.com/dongma/p/12734898.html