leetcode134

class Solution {
public:
    inline int get_next(int idx, int size)
    {
        return idx == size-1 ? 0 : idx+1;
    }
    
    int aux(int idx, vector<int>& gas, vector<int>& cost)
    {
        int i = idx;
        int left = gas[i] - cost[i];
        if(left < 0)
            return -1;
        i = get_next(i, gas.size());
        while( i!= idx)
        {
            left = left + gas[i] - cost[i];
            if(left < 0)
                return -1;
            i = get_next(i, gas.size());
        }
        return idx;
    }
    
    
    
    int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
        int ret;
        int i = 0;
        for(; i<gas.size(); ++i)
        {
            if(gas[i] >= cost[i])
            {
                ret = aux(i, gas, cost);
                cout << ret << endl;
                if(ret == -1)
                    continue;
                else
                    break;
            }
        }
        return ret;
    }
};

猜你喜欢

转载自www.cnblogs.com/asenyang/p/9826603.html