📅  最后修改于: 2023-12-03 15:37:13.754000             🧑  作者: Mango
该问题是一道算法题目,要求编写一个程序来确定给定数量的股票在一周内是否会产生利润。程序员需要使用给定的一维整数数组表示每天股票的价格,并计算出最大收益。
假设有一个整数数组 stock_prices
,其中 stock_prices[i]
表示股票在第 i
天的价格。 如果你只能买一次,而且在未来某天卖出它,请编写一个函数来找出最大的利润。
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第二天买进 (价格 = 1) 并在第五天卖出 (价格 = 6),最大利润 = 6-1 = 5。
这道题可以使用贪心或动态规划算法来解决。
在贪心算法中,我们需要遍历整个数组,并为每个元素都计算该元素到数组中最后一个元素的最大差值。 最后,我们返回具有最大差值的元素。
代码片段:
def max_profit(prices):
if not prices:
return 0
buy_price = prices[0]
max_profit = 0
for i in range(1, len(prices)):
if prices[i] < buy_price:
buy_price = prices[i]
elif prices[i] - buy_price > max_profit:
max_profit = prices[i] - buy_price
return max_profit
在动态规划算法中,我们需要创建一个辅助数组 dp
来存储每个元素在当前位置卖出的最大收益。 具体来说,我们可以使用以下公式计算 dp[i]
:
dp[i] = max(dp[i-1], prices[i] - min_price)
其中,min_price
表示数组中在当前位置之前的最小值。
代码片段:
def max_profit(prices):
if not prices:
return 0
dp = [0] * len(prices)
min_price = prices[0]
for i in range(1, len(prices)):
min_price = min(min_price, prices[i])
dp[i] = max(dp[i-1], prices[i] - min_price)
return dp[-1]
这道问题是一道相对简单的算法题目,可以用贪心或动态规划算法来解决。 不管是哪种算法,计算最大收益的核心思想都是找到最小买入股票价格,并计算卖出时的最大利润。