题目

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股票可能获得的利润是多少?例如一只股票在某些时间节点的价格为{9, 11, 8, 5, 7, 12, 16, 14}。如果我们能在价格为5的时候买入并在价格为16时卖出,则能收获最大的利润11。

思路

遍历每一个数字,并保存之前最小的数字,两者差最大即为最大利润。

python代码

stock1 = [12, 9, 7, 5, 2, 1]
stock2 = [9, 11, 8, 5, 7, 12, 16, 14]


def get_max_diff(stock_price_list):
    if not stock_price_list or len(stock_price_list) < 2:
        return
    min_value = stock_price_list[0]
    max_diff = stock_price_list[1] - stock_price_list[0]
    for i in range(2, len(stock_price_list)):
        # 只要先计算出前N-1天的最低价格,则当前利润 = 当天价格 - 历史最低价,记录该嘴最大利润
        if stock_price_list[i-1] < min_value:
            min_value = stock_price_list[i-1]
        current_diff = stock_price_list[i] - min_value  # 当天最大利润= 当天价格-前N-1天的最低价
        if current_diff > max_diff:
            max_diff = current_diff

    print(max_diff)


get_max_diff(stock1)  # -1
get_max_diff(stock2)  # 11
	        
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐