數據結構與算法--10.利益最大值

1.題目

亞馬遜是一家納斯達克上市的公司,通過其財務報表我們可以解讀它在給定時期內的股票走勢信息。這些信息包括每天交易的最高價,最低價以及開盤價。假定你作爲交易員,必須在股票開盤的時候做出買入或者賣出的決定。你負責設計一個算法,根據給定的股票價格走勢信息,決定買入和賣出策略,該策略保證的交易獲得最大的利潤

2.代碼(Python)

S = [2,4,1,7,9,3,5,8]
# 買的天數
buyDay = 0
# 賣的天數
salDay = 0
# 收益最大值
Profit = 0
# 買入的最小价格
minPrice = S[0]


for N in range(len(S)):
    # (0——n-1)之間尋找買入的天數
    if S[N] < minPrice:
        buyDay = N
        minPrice = S[N]

    # 獲取利益最大值的賣出天數
    if S[N] - minPrice > Profit:
        Profit = S[N]-minPrice
        salDay = N

print("在第{}天買入,在第{}天賣出,能夠獲得最大收益:{}".format(buyDay+1,salDay+1,Profit))

3.複雜度

時間複雜度:只需要把數值遍歷一遍,因此時間複雜度爲O(n);
空間複雜度:空間上只需要存儲開盤價格數組,不需要額外分配存儲空間,因此空間複雜度都是O(n)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章