Time Limit Exceeded:
class Solution {
public:
int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
int n = gas.size();
for(int i = 0; i < n; ++i) {
bool canGo = true;
int gs = 0;
for(int j = i; j < n; ++j) {
gs += gas[j];
if(cost[j] > gs) {
canGo = false;
break;
} else {
gs -= cost[j];
}
}
for(int j = 0; j < i; ++j) {
gs += gas[j];
if(cost[j] > gs) {
canGo = false;
break;
} else {
gs -= cost[j];
}
}
if(canGo) {
return i;
}
}
return -1;
}
};
Need to review
class Solution {
public:
int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
int n = gas.size();
vector<int> diff;
for(int i = 0; i < n; ++i) {
diff.emplace_back(gas[i] - cost[i]);
}
int sum = 0, left = 0, start = 0;
for(int i = 0; i < n; ++i) {
sum += diff[i];
left += diff[i];
if(sum < 0) {
start = i+1;
sum = 0;
}
}
if(left < 0) {
return -1;
} else {
return start;
}
}
};
No comments:
Post a Comment