思路:
- 1.定义最大利润和i为0,最大价格和最小价格为数组的第一个元素
- 2.跌:循环第i位的价格大于下一位的价格就继续i++,小于则是这一次下跌的最低价格,min = prices[i]
- 3.涨:循环第i位的价格小于下一位的价格就继续i++,大于则是这一次下跌的最低价格,max = prices[i]
- 4.利润=最大价格-最小价格
/*
* @lc app=leetcode.cn id=122 lang=javascript
*
* [122] 买卖股票的最佳时机 II
*/
// @lc code=start
/**
* @param {number[]} prices
* @return {number}
* 1.定义最大利润和i为0,最大价格和最小价格为数组的第一个元素
* 2.跌:循环第i位的价格大于下一位的价格就继续i++,小于则是这一次下跌的最低价格,min = prices[i]
* 3.涨:循环第i位的价格小于下一位的价格就继续i++,大于则是这一次下跌的最低价格,max = prices[i]
* 4.利润=最大价格-最小价格
*/
var maxProfit = function (prices) {
if (prices.length === 0) {
return 0
}
let maxProfit = 0,
min = prices[0],
max = prices[0],
i = 0
while (i < prices.length - 1) {
// 跌
while (i < prices.length - 1 && prices[i] >= prices[i + 1]) {
i++
}
min = prices[i]
// 涨
while (i < prices.length - 1 && prices[i] <= prices[i + 1]) {
i++
}
max = prices[i]
maxProfit += max - min
}
return maxProfit
}
// @lc code=end