leetcode 860. 柠檬水找零

 

 

class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        //贪心算法:每次找零先找最大的
        vector<int> m(3,0);//分别5,10,20
        vector<int> v={5,10,20};//实际上最后一个20不可能找零所以也可以不写;
        int len=bills.size();
        for(int i=0;i<len;i++){
            if(bills[i]==5){
                //cout<<"x"<<endl;
                m[0]++;continue;
                
            }
            if(bills[i]==10)
                m[1]++;
            else
                m[2]++;
            int tar=bills[i]-5;
            for(int j=1;j>=0;j--){
                int c=min(tar/v[j],m[j]);
                m[j]=m[j]-c;
                tar=tar-c*v[j];
                
            }
            //cout<<tar<<endl;
            if(tar>0) return false;
        }
        return true;
    }
};

 

posted @ 2019-04-01 15:26  Joel_Wang  阅读(207)  评论(0编辑  收藏  举报