目录
1->题目链接
看下题目
2->题目解析
提取关键信息:
(1)顾客一个一个排队来,是有顺序的,水5块
(2)刚开始你手上一个5/10/20都没有
(3)顾客只会给你5块,10块,20块,其他绝对不会出现
(4)顾客给你5块,你把5块收下,你找他0;
顾客给你10块,你把10块收下,你只有找他5块这一个选择
顾客给你20,你把20块收下,你找他15,注意注意,这里就体现出来贪心策略了,;两种找钱策略先采 取哪一种才能让算法最优,这就是贪心(选取最优策略)
(一)找他一个10一个5
(二)找他3个5
3->算法原理
这道贪心题目挺简单的,算法原理在上边题目解析差不多说完了,接下来看图
4->编写代码
接下来一起编写代码吖!!!
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int five = 0,ten = 0;//这两个变量用来表示我手上 5 && 10 的个数
for(auto x : bills)
{
if(x == 5)
{
++five;//5块收下,++five
}
else if(x == 10)
{
++ten;//10块收下
if(five > 0) --five;//找给人家一个5块,--five
else return false;
}
else//这里是20的情况
{
if(ten > 0 && five > 0)//优先使用方案一10+5
{
--ten; --five;
}
else if(five >= 3)//退而求其次使用方案二5+5+5
{
five -= 3;
}
else return false;
}
}
return true;
}
};
看下结果:欧耶击败了100%的用户,一起写吖!
5->你的专属鼓励师
一遍学不会没关系吖,多看几遍,我也是学了好多遍呢,小伙伴们肯定学的又快又好!!!最后希望写的内容对小伙伴们有所帮助,我写的如果有哪里不对的地方请在评论区或者私信指出来哦!让我们一起进步吖,任何疑问包括心情不好都可以找我聊聊,我很乐意当你的倾听者吖.