LeetCode 122 Best Time to Buy and Sell Stock II

1.題目

an array for which the ith element is the price of a given stock on day i.

Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

Subscribe to see which companies asked this question
給定一個數組,每個元素分別代表每天的股票價格,要求可進行多次交易,求得獲取的最大利潤和。注意:買入必須在賣出之前。
2.分析:
經過分析,該題目不符合動態規劃的要求。由於題目提示可以經過多次交易,則可以通過貪心法來做,遍歷一邊數組,如發現數組中的元素比前一個元素大,則可以計算出差值,加到最終的總利潤中。
採用貪心法求解,時間複雜度爲O(n)
code:

public class Solution {
    public int maxProfit(int[] prices) {
        if(prices==null || prices.length<2){
            return 0;
        }
        int curMin=prices[0];
        int profit=0;
        int len=prices.length;
        for(int i=1;i<len;i++){
            if(prices[i]<curMin){
                curMin=prices[i];
            }else if(prices[i]>curMin){
                profit+=prices[i]-curMin;
                curMin=prices[i];
            }
        }
        return profit;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章