https://leetcode.com/problems/best-time-to-buy-and-sell-stock/#/description
问题描述:
Say you have an array for which the ith element is the price of a given stock on day i.
If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.
Example 1:
Input: [7, 1, 5, 3, 6, 4]
Output: 5
max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price)
Example 2:
Input: [7, 6, 4, 3, 1]
Output: 0
In this case, no transaction is done, i.e. max profit = 0.
思路解析:
如果只允许最多完成一个交易(即购买一个交易并且卖出一个股票),则设计一个算法来找到最大利润。最开始一定是买入最便宜的股票,最后在股票价格最贵的那一天卖出。
代码如下:
public class Solution {
public int maxProfit(int[] prices) {
if(prices.length==0)return 0;
int max=0;
int k=prices[0];
for(int i=1;i<prices.length;i++){
if(prices[i] > k){
max=Math.max(max,prices[i]-k);
}else{
k=prices[i];
}
}
return max;
}
}