public class Solution {
/**
*
* @param prices int整型一维数组
* @return int整型
*/
public int maxProfit (int[] prices) {
int len = prices.length;
Stack<Integer> s = new Stack<>();
// 可以在 prices[len] 位置放一个 -1 的哨兵
// 这样可以让单调递增的数组中所有的元素逼出去
int ans = 0;
for (int i = 0; i < prices.length; i++) {
while (s.size() > 0 && s.peek() > prices[i]) {
ans = Math.max(ans, s.peek() - s.firstElement());
s.pop();
}
s.add(prices[i]);
}
// 模拟哨兵行为
if (s.size() > 0)
ans = Math.max(ans, s.peek() - s.firstElement());
return ans;
}
}