day35

860

class Solution {
public:
    bool lemonadeChange(vector<int> &bills) {
        int five = 0, ten = 0;
        for (int b: bills) {
            if (b == 5) five++; 
            else if (b == 10) five--, ten++; 
            else if (ten) five--, ten--; // 此时 b=20,返还 10+5
            else five -= 3; // 此时 b=20,返还 5+5+5
            if (five < 0) return false; // 无法正确找零
        }
        return true;
    }
};

406

class Solution {
public:
     static bool Bigger(const vector<int> num1, const vector<int> num2 ){
        if(num1[0] == num2[0]){
            return num1[1] < num2[1];
        }
        else{
            return num1[0] > num2[0]; 
        }
    }

    vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
       
        sort(people.begin(),people.end(),Bigger);
        list<vector<int>> que; 
        for (int i = 0; i < people.size(); i++) {
            int position = people[i][1]; 
            std::list<vector<int>>::iterator it = que.begin();
            while (position--) { 
                it++;
            }
            que.insert(it, people[i]);
        }
        return vector<vector<int>>(que.begin(), que.end());

    }
};

452

class Solution {
public:
    static bool cmp(const vector<int>& a, const vector<int>& b) {
        if(a[0] == b[0]){
            return a[1] < b[1];
        }
        return a[0] < b[0];
    }
    int findMinArrowShots(vector<vector<int>>& points) {
        if(points.size() == 0)  return 0;
        sort(points.begin(), points.end(), cmp);
        int res = 1;
        for(int i = 1; i < points.size(); i++){
            if(points[i][0] <= points[i-1][1]){
                points[i][1] = min(points[i-1][1],points[i][1]);
            }
            else{
                res++;
            }
        }
        return res;

    }
};

435

class Solution {
public:
    static bool cmp(const vector<int>& a, const vector<int>& b) {
        return a[0] < b[0];
    }
    int eraseOverlapIntervals(vector<vector<int>>& intervals) {
        int num = 0;
        
        sort(intervals.begin(),intervals.end(),cmp);
        int bound = intervals[0][1];
        for(int i = 1 ; i < intervals.size(); i++){
            if(intervals[i][0] < bound){
                num++;
                bound = min(intervals[i][1],bound);
            }
            else{
                bound = intervals[i][1];
            }
        }

        return num;

    }
};

763

class Solution {
public:
    vector<int> partitionLabels(string s) {
        int hash[27] = {0}; 
        for (int i = 0; i < s.size(); i++) { 
            hash[s[i] - 'a'] = i;
        }
        vector<int> result;
        int left = 0;
        int right = 0;
        for (int i = 0; i < s.size(); i++) {
            right = max(right, hash[s[i] - 'a']); 
            if (i == right) {
                result.push_back(right - left + 1);
                left = i + 1;
            }
        }
        return result;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值