diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" index 7853fc1cd50c119be217ae41a535db3056d7fd40..cd68be1767867f170f1cec0ca7bc7177f9147eb9 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\347\263\273\345\210\227/\345\215\225\350\260\203\346\240\210.md" @@ -188,8 +188,10 @@ class Solution { Stack stack = new Stack<>(); int[] ans = new int[T.length]; for (int i = 0; i < T.length; i++) { + // 如果压栈之后不满足单调递减,弹出元素,直至保持单调性 while (!stack.isEmpty() && T[i] > T[stack.peek()]) { int index = stack.pop(); + // 被弹出的元素(T[index])都是小于当前的元素(T[i]),由于栈内元素单调递减,大于被弹出元素(index)的最近的就是当前元素(i) ans[index] = i - index; } stack.push(i);