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

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

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

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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