给定一个正整数数组,它的第 i 个元素是比特币第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一次),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入比特币前卖出。
s = list(map(int, input().split())) c = [0] for i in range(len(s)-1): a = s[0] s.remove(s[0]) b = max(s) if b - a >= 0: c = c + [b-a] print(max(c))找每天买比特币时可得到的最大利润,找最大值
## 法1 import sys price=list(map(int,sys.stdin.readline().split())) res=0 for i in range(len(price)): for j in range(i+1,len(price)): res=max(res,price[j]-price[i]) print(res) ## 法2 import sys arr=list(map(int,sys.stdin.readline().split())) cur_min=arr[0] dp=[0]*len(arr) for i in range(1,len(arr)): dp[i]=max(dp[i],arr[i]-cur_min) cur_min=min(cur_min,arr[i]) print(max(dp))
price = list(map(int, input().strip().split())) profile = max(max(price[i+1:]) - price[i] for i in range(len(price) - 1)) print(max(profile, 0))
def max_profit(lst): max_ = 0 length = len(lst) for i in range(length): max_num = max(lst[i:]) if max_num - lst[i] > max_: max_ = max_num - lst[i] print(max_) def max_profit_2(lst): """ 解题思路:用min_before保存当日之前的最低价格,则当日价格price与min_before之差为当日卖出可获最大收益,用max_记录扫描过程中 计算出的每个日卖出可获最大收益的最大值,并在扫描过程中更新min_before 时间复杂度:O(n) 空间复杂度:O(1) 特殊情况:严格单调下降不予考虑(实际意义不大),如有需要可令max_ = -float("inf"), min_before = float("inf") """ max_ = 0 min_before = lst[0] for price in lst: if price - min_before > max_: max_ = price - min_before if price < min_before: min_before = price print(max_) lst = list(map(int, input().split())) max_profit_2(lst)