题目
给定一个数组
prices
,它的第i
个元素prices[i]
表示一支给定股票第i
天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回
0
。
解题思路
- 排除特殊情况即只有一天可交易,那么利润一定为0;
- 对数组进行遍历然后读取有利润差的日期和利润,并返回最大利润;
- 在新的最小值出现而最大值不为初始值的情况下,需要重置最大值,因为最大值一定出现在最小值后面。
代码展示
class Solution {public int maxProfit(int[] prices) {int n = prices.length;if(n == 1){return 0;}int ans = 0;int min = prices[0];int max = -1;for (int i = 1; i < n; i++){if(prices[i] < min){min = prices[i];max = -1;} else if(prices[i] > max){max = prices[i];ans = Math.max(ans, max - min);}}return ans;}
}