欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 219.贪心算法:柠檬水找零(力扣)

219.贪心算法:柠檬水找零(力扣)

2025/3/17 23:35:32 来源:https://blog.csdn.net/weixin_63779802/article/details/140381053  浏览:    关键词:219.贪心算法:柠檬水找零(力扣)

代码解决

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int num5=0, num10=0; // 初始化5美元和10美元的计数器for(int i=0; i < bills.size(); i++) // 遍历所有账单{if(bills[i]==5) // 如果账单是5美元{num5++; // 增加5美元的计数continue; // 继续处理下一个账单}else if(bills[i]==10) // 如果账单是10美元{num10++; // 增加10美元的计数if(num5!=0) // 检查是否有5美元的零钱{num5--; // 使用一个5美元的零钱continue; // 继续处理下一个账单}else{return false; // 没有足够的零钱,返回false}}else if(bills[i]==20) // 如果账单是20美元{if(num10!=0 && num5!=0) // 优先使用一个10美元和一个5美元的零钱{num5--; // 使用一个5美元的零钱num10--; // 使用一个10美元的零钱continue; // 继续处理下一个账单}else if(num5>=3) // 如果没有10美元的零钱,检查是否有三个5美元的零钱{num5 -= 3; // 使用三个5美元的零钱}else{return false; // 没有足够的零钱,返回false}}}return true; // 如果所有账单都成功找零,返回true}
};

代码逻辑总结:

  1. 初始化两个计数器来记录5美元和10美元的数量。
  2. 遍历账单列表:
    • 如果账单是5美元,直接增加5美元的数量。
    • 如果账单是10美元,首先检查是否有5美元的零钱,如果有则使用一个5美元的零钱并增加10美元的数量,否则返回false。
    • 如果账单是20美元,优先尝试使用一个10美元和一个5美元的零钱,如果不行则尝试使用三个5美元的零钱,如果两种方式都不行则返回false。
  3. 遍历结束后,如果所有账单都成功找零,则返回true。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词