leetcode (Best Time to Buy and Sell Stock)
阿新 • • 發佈:2018-11-24
Title: Merge Stored Array 121
Difficulty:Easy
原題leetcode地址:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/
這題需要理解意思,將prices作為股票交易的價格,是可以買也可以是賣的。
1. 注意點見程式碼中的註釋,時間&空間複雜度如下:
時間複雜度:O(n),一層for迴圈,最長需要遍歷整個陣列。
空間複雜度:O(1),沒有申請額外的空間。
/** * 題目意思:給一個數組prices[],prices[i]代表股票在第i天的售價,求出只做一次交易(一次買入和賣出)能得到的最大收益。 * @param prices * @return */ public static int maxProfit(int[] prices) { if(prices == null || prices.length <= 1) { return 0; } int maxProfit = 0; // 最大的利潤 int minPrice = Integer.MAX_VALUE; // 股票最小的價格 for (int i = 0; i < prices.length; i++) { if (prices[i] < minPrice) { minPrice = prices[i]; } else if (maxProfit < prices[i] - minPrice) { maxProfit = prices[i] - minPrice; } } return maxProfit; }