本文共 1105 字,大约阅读时间需要 3 分钟。
要解决这个问题,我们需要找到给定股票价格数组中能够获得的最大利润。规则是只能买入一次并卖出一次,且卖出价格必须高于买入价格。
我们可以使用一个高效的算法来解决这个问题。这个算法的时间复杂度是O(n),空间复杂度是O(1),非常适合处理大数据量的情况。具体步骤如下:
min_price 和最大利润 max_profit。初始时,min_price 设为第一个价格,max_profit 设为0。min_price,计算当前价格与 min_price 的利润,并与 max_profit 比较,更新 max_profit。min_price,更新 min_price。max_profit。这种方法确保我们只遍历数组一次,时间复杂度为O(n),能够高效地解决问题。
#includeusing namespace std;int maxProfit(vector &prices) { if (prices.size() == 0) return 0; int min_price = prices[0]; int max_profit = 0; for (int i = 1; i < prices.size(); ++i) { if (prices[i] > min_price) { int profit = prices[i] - min_price; if (profit > max_profit) { max_profit = profit; } } else { min_price = prices[i]; } } return max_profit;}
min_price 设为第一个价格,max_profit 设为0。min_price 的关系。 min_price,计算利润,并更新 max_profit。min_price,更新 min_price。max_profit。这种方法确保了在最优的时间和空间复杂度下解决问题,适用于各种股票价格数组。
转载地址:http://ydgfk.baihongyu.com/