860. 柠檬水找零

860. 柠檬水找零

 

 

 

 --解题思路--

 钱币种类:5美元、10美元、20美元

购买行为存在以下情况:

    • 5美元来一杯
    • 10美元来一杯,找零5美元
    • 20美元来一杯,找零存在两种情况:
      •      找零10美元+5美元
      •      找零5美元*3

注:每次找零必须保证按照从金额最大的开始找零,例如,20美元来一杯的时候,找零时一定优先10美元+5美元,其次在考虑5美元*3

 

--解题代码--

 public boolean lemonadeChange(int[] bills) {
        int count5 = 0;
        int count10 = 0;
        for(int i:bills){
            //1.   5美元来一杯
            if(i == 5)
                count5++;
            // 2.   10美元来一杯,找零5美元
            else if(i == 10){
                if(count5>=1){
                    count10++;
                    count5--;
                }
                else return false;
            }
            //3.    20美元来一杯
            else {
                //找零时,优先考虑10美元+5美元
                if(count5>=1 && count10>=1){
                    count5--;
                    count10--;
                }
                //在考虑,5美元*3
                else if(count5>=3){
                    count5 -= 3;
                }
                else return false;
            }

        }
        return true;

    }

 

posted @ 2020-12-10 15:45  进击的小渣渣!!  阅读(87)  评论(0)    收藏  举报