这是我自己想的笨办法,这个超时了
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
let res = 0;
for (let i = 0; i < prices.length; i++) {
for (let j = i + 1; j < prices.length; j++) {
if (prices[j] - prices[i] > res) {
res = prices[j] - prices[i]
}
}
}
return res;
};
下面这个是参考答案改的
遍历 将遇到的最小价格记录下来 如果一直存在比上一个最小价格还小的价格那就说明这是个递减的序列,盈利为负,此时最大利润为0
只有遇到比最小价格大的数利润才可能为正,将正的利润记录并比较
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
let maxprofit = 0;
let minprice = Number.MAX_VALUE;
for (let i = 0; i < prices.length; i++) {
if (prices[i] < minprice) {
minprice = prices[i];
} else if (prices[i] - minprice > maxprofit) {
maxprofit = prices[i] - minprice;
}
}
return maxprofit;
};