Algorithm/src/main/java/greedy/MaxProfit.java

32 lines
1.4 KiB
Java
Raw Normal View History

2025-04-04 12:05:49 +08:00
package greedy;
/**
* 题目 121. 买卖股票的最佳时机 (maxProfit)
* 描述给定一个数组 prices 它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格
* 你只能选择 某一天 买入这只股票并选择在 未来的某一个不同的日子 卖出该股票设计一个算法来计算你所能获取的最大利润
* 返回你可以从这笔交易中获取的最大利润如果你不能获取任何利润返回 0
* 示例 1
输入[7,1,5,3,6,4]
输出5
解释在第 2 股票价格 = 1的时候买入在第 5 股票价格 = 6的时候卖出最大利润 = 6-1 = 5
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格同时你不能在买入前卖出股票
* 链接https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/
*/
2025-04-09 12:50:45 +08:00
//第一次做没想出来,每次都假设是今天卖出,然后求今天之前的历史最低点。
2025-04-04 12:05:49 +08:00
public class MaxProfit {
public int maxProfit(int prices[]) {
int minprice = Integer.MAX_VALUE;
int maxprofit = 0;
for (int price : prices) {
if (price < minprice) {
minprice = price;
2025-04-09 12:50:45 +08:00
} else if (price - minprice > maxprofit) { //else if 是因为今日如果买进今日卖出收益为0
2025-04-04 12:05:49 +08:00
maxprofit = price - minprice;
}
}
return maxprofit;
}
}