leetcode Gas Station

来源:互联网 发布:json jar包 编辑:程序博客网 时间:2024/06/05 14:26

Gas Station

 Total Accepted: 19381 Total Submissions: 75345My Submissions

There are N gas stations along a circular route, where the amount of gas at station i is gas[i].

You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You begin the journey with an empty tank at one of the gas stations.

Return the starting gas station's index if you can travel around the circuit once, otherwise return -1.

Note:
The solution is guaranteed to be unique.

Have you been asked this question in an interview? 

Discuss


class Solution {public:    // pass every station,the cost is gas[i] - cost[i]    // if all the station cost sum is negative, then you can not pass a circle. otherwise, you can    // start from some place    // From one station, step by step, at one station if the cost sum become negative,    //  then you must not start from this station, neighter the station before whose cost is bigger than zero    // so the time complexity is o(n)    //7:25    int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {        int len = gas.size();        int sum = 0,i=0,res=0;        vector<int> remain(len,0);// calculate the single gas ramining in every station        for(i=0;i<len;i++)        {            remain[i] = gas[i] - cost[i];            sum += remain[i];        }        if(sum<0)        {            return -1;        }        sum = 0;// suppose start from the zero        for(i=0;i<len;i++)        {            sum+=remain[i];// use the front stations as the start place is not acceptable, may be start // from next station.            if(sum<0){                res = i+1;                sum = 0;            }        }        return res;    }};




0 0
原创粉丝点击