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 = NminPrice = S[N]# 獲取利益最大值的賣出天數if S[N] - minPrice > Profit:Profit = S[N]-minPricesalDay = Nprint("在第{}天買入,在第{}天賣出,能夠獲得最大收益:{}".format(buyDay+1,salDay+1,Profit))
3.復雜度
時間復雜度:只需要把數值遍歷一遍,因此時間復雜度為O(n);
空間復雜度:空間上只需要存儲開盤價格數組,不需要額外分配存儲空間,因此空間復雜度都是O(n)。