【贪心算法】柠檬水找零

1.题目解析

860. 柠檬水找零 - 力扣(LeetCode)

2.讲解算法原理

分情况讨论

5---》直接收下

10---》找五元,收下

20----》10+5△

----》5+5+5

由于5元更有用,则尽可能保留5元

3.代码

java 复制代码
class Solution {
    public boolean lemonadeChange(int[] bills) {
        int five=0,ten=0;
        for(int x:bills){
            if(x==5){
                five++;
            }else if(x==10){
                if(five==0){
                    return false;
                }else{
                    five--;
                    ten++;
                }
            }else{
                if(ten!=0&&five!=0){
                    ten--;
                    five--;
                }else if(five>=3){
                    five-=3;
                }else{
                    return false;
                }
            }
        }
        return true;
    }
}

4.证明

证明策略:交换论证法

贪心解:a,b,c,d,e,f

最优解:e,b,c,d,a,f

在不破坏最优解的"最优性质"的前提下,能够将最优解调整成贪心解

相关推荐
Luis Li 的猫猫7 分钟前
基于MATLAB的冰块变化仿真
开发语言·图像处理·人工智能·算法·matlab
郭涤生13 分钟前
并发操作的同步_第四章_《C++并发编程实战》笔记
开发语言·c++·算法
深思慎考14 分钟前
Linux——进程间通信(system V共享内存)
linux·服务器·算法
加减法原则1 小时前
求最大子数组和 | LeetCode刷题
算法
折枝寄北1 小时前
从零开始 | C语言基础刷题DAY1
c语言·开发语言·算法
.ccl2 小时前
蓝桥杯省赛真题C++B组2024-握手问题
c++·算法·蓝桥杯
arong_xu2 小时前
C++20 新特性总结
算法·c++20
hrrrrb2 小时前
【C语言】指针篇
c语言·数据结构·算法
神里流~霜灭2 小时前
下降路径最⼩和(medium)
数据结构·c++·算法·链表·贪心算法·动态规划
编程绿豆侠2 小时前
力扣HOT100之双指针:11. 盛最多水的容器
算法·leetcode·职场和发展