题解 | #买卖股票的最好时机(一)#

买卖股票的最好时机(一)

http://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec



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;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务