题目描述
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
注意:你不能在买入股票前卖出股票。
解题思路
转变思路:把买入股票当做是最小值,卖出股票当做是最大值
1、题意理解:对一个数组,找出这个数组的最大值和最小值,并且这个最小值的索引在最大值的索引之前。
2、代码逻辑:假设最小值是数组的第一个值,遍历整个数组,如果prices[i]比最小值min小,更新变量min的值,变量profit用来存储两个数之间的差值。
代码
class Solution {
public int maxProfit(int[] prices) {
if(prices == null || prices.length <= 1) return 0;
int min = prices[0];
int profit = 0;
for(int i = 1; i < prices.length; i++){
min = Math.min(min, prices[i]);
profit = Math.max(profit, prices[i] - min);
}
return profit;
}
}