给定一个正整数数组,它的第 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)