这个解法使用了贪心算法的思想。我们通过遍历数组 prices
来计算相邻两天的价格差,如果价格差大于零,则认为存在利润。利润会累加到变量 maxprofit
中。最后,我们返回 maxprofit
作为最大利润。
假设给定的数组 prices
长度为 n。我们需要进行 n-1 次价格差的计算,因为我们比较的是相邻两天的价格。如果价格差大于零,则将利润累加到 maxprofit
中。这个算法的时间复杂度为 O(n),因为我们只需要一次遍历来计算最大利润。
这个题解的关键点在于贪心选择,即每次都选择局部最优解,使得最终的结果也是全局最优解。在这个问题中,我们只关注价格上涨的情况,因为只有在价格上涨时才能获得利润。而对于价格下跌的情况,我们选择不进行买卖操作,以免造成亏损。
class Solution {
public int maxProfit(int[] prices) {
int maxprofit = 0; // 初始化最大利润为0
// 遍历数组 prices
for (int i = 0; i < prices.length - 1; i++) {
int temp = prices[i + 1] - prices[i]; // 计算相邻两天的价格差
// 如果价格差大于0,说明存在利润
if (temp > 0) {
maxprofit += temp; // 将利润累加到 maxprofit 中
}
}
return maxprofit; // 返回最大利润
}
}