Title: Merge Stored Array 121
Difficulty:Easy
原题leetcode地址:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/
这题需要理解意思,将prices作为股票交易的价格,是可以买也可以是卖的。
1. 注意点见代码中的注释,时间&空间复杂度如下:
时间复杂度:O(n),一层for循环,最长需要遍历整个数组。
空间复杂度:O(1),没有申请额外的空间。
/**
* 题目意思:给一个数组prices[],prices[i]代表股票在第i天的售价,求出只做一次交易(一次买入和卖出)能得到的最大收益。
* @param prices
* @return
*/
public static int maxProfit(int[] prices) {
if(prices == null || prices.length <= 1) {
return 0;
}
int maxProfit = 0; // 最大的利润
int minPrice = Integer.MAX_VALUE; // 股票最小的价格
for (int i = 0; i < prices.length; i++) {
if (prices[i] < minPrice) {
minPrice = prices[i];
}
else if (maxProfit < prices[i] - minPrice) {
maxProfit = prices[i] - minPrice;
}
}
return maxProfit;
}