1. 程式人生 > >leetcode (Best Time to Buy and Sell Stock)

leetcode (Best Time to Buy and Sell Stock)

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;

    }