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); } } } 結果を返す; } }