基本概念
贪心算法是一种思想,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解
贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。
思想:利用贪心算法的思想,只要下一天卖出赚钱就卖
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
let count = 0
for(let i = 0; i < prices.length - 1; i++) {
count = count + Math.max(0,prices[i+1] - prices[i])
}
return count
};
思路:对于找零这种题目,优先考虑贪心算法
策略: 优先找最大的零钱,开辟两个空间,一个存5,一个存10,由于20不能给任何钱找零所以不存
var lemonadeChange = function(bills) {
let five = 0, ten = 0;
for (const bill of bills) {
if (bill === 5) {
five += 1;
} else if (bill === 10) {
if (five === 0) {
return false;
}
five -= 1;
ten += 1;
} else {
if (five > 0 && ten > 0) {
five -= 1;
ten -= 1;
} else if (five >= 3) {
five -= 3;
} else {
return false;
}
}
}
return true;
};