赞
踩
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.
- class Solution {
- public:
- int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
- for(int j=0;j<gas.size();j++)
- {
- int tank = 0;
- bool work = true;
- int i=j;
- do
- {
- tank+=gas[i];
- tank-=cost[i];
- if(tank < 0)
- {
- work = false;
- break;
- }
- i=(i+1)%gas.size();
- }while(i!=j);
- if(work)
- {
- return j;
- }
- }
- return -1;
- }
- };
- class Solution {
- public:
- int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
- vector<int> remainder;
- int sum =0;
- for(int i = 0; i < gas.size(); i++)
- {
- remainder.push_back(gas[i]-cost[i]);
- sum += gas[i]-cost[i];
- }
- if(sum < 0)
- {
- return -1;
- }
- else
- {
- int start;
- int cur = 0;
- do
- {
- start = cur;
- int tmp = remainder[cur++];
- while(tmp >= 0 && cur<gas.size())
- {
- tmp += remainder[cur++];
- if(tmp < 0)
- {
- break;
- }
- }
- if(tmp >= 0 && cur == gas.size())
- {
- return start;
- }
- }while(cur<gas.size());
- return -1;
- }
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。