买卖股票的最佳时机
题目来源:买卖股票的最佳时机
问题描述:
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
注意:你不能在买入股票前卖出股票。
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
问题分析:
找到最大利润即是,在股价最低时买入,往后最高时卖出
初始化利润最大值为0,股价最小值为第一天的股价。
因为,不能再买入股票前卖出股票,所以,记录当前时间之前股价的最小值,然后与当先前时间股价比较,取最小值。再用当先前的股价和最低股价计算,与当前最大利润比较,取较大值,较大值即为当前最大利润。
代码实现:
package leetcode;
public class Main {
public static int maxProfit(int[] prices) {
if(prices.length==0){
return 0;
}else{
int max=0;
int min=prices[0];
for(int i=1;i<prices.length;i++) {
min=Math.min(prices[i],min);
max=Math.max(max, prices[i]-min);
}
return max;
}
}
}