动态规划:
public int maxProfit(int[] prices) {
int n = prices.length;
int[] rightMax = new int[n]; // 用于存储每个位置右侧的最大值
rightMax[n-1] = 0; // 最后一个位置的右侧最大值为0,因为无法再卖出股票
for (int i = n-2; i >= 0; i--) {
rightMax[i] = Math.max(rightMax[i+1], prices[i+1]); // 计算每个位置右侧的最大值
}
int max = 0; // 存储最大利润的变量
for (int i = 0; i < n; i++) {
int sub = rightMax[i] - prices[i]; // 计算在当前位置卖出股票所能获得的利润
if (sub > max) {
max = sub; // 更新最大利润
}
}
return max; // 返回最大利润
}