题目链接
题目简介
给定一个数组prices
,它的第 i
个元素 prices[i]
表示一支给定股票第 i
天的价格。
你只能选择 某一天
买入这只股票,并选择在 未来的某一个不同的日子
卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
题目解析
- 题目大致意思:
前面买的股票,后面卖出,求最大值
简化为num[i] - (i 之前数组的min)
- 定义两个变量
max = 0,min = num[0]
- 每次在进行循环时,先求出
max = Math.max(max, num[i] - min);
,然后去求min = Math.min(min, num[i]);
- 最后返回
max
即可
题目代码
public int maxProfit(int[] prices) { // 当天价格 - 以往最小价格 = 利润 int max = 0; int min = prices[0]; for(int i = 1; i < prices.length; i++){ max = Math.max(max, prices[i] - min); min = Math.min(min, prices[i]); } return max; }