您的位置:首页 > 其它

[LeetCode]Gas Station

2015-07-26 16:34 423 查看
解题思路:
1,假设每个city的净值为 gas[ i ] - cost[ j ];
2,遍历所有gas station,carry为净值的和;
3,中心思想,如果在某个station,carry的值是最小的,那么从下一个station开始绕一定是最好的策略。同时,如果carry总和 >= 0 一定可以绕一圈,否则不能够绕一圈返回-1
4,注意一点:下一个点要用 (minInd+1) % size ,计算,因为最后一个station的下一个是第0个
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
if (gas.size() < 1) return -1;
int minSum = gas[0] - cost[0];
int minInd = 0;
int carry = gas[0] - cost[0];
for (int i = 1; i < gas.size(); ++i){
carry += (gas[i] - cost[i]);
if (carry < minSum){
minSum = carry;
minInd = i;
}
}
return carry >=0 ? (minInd + 1)%gas.size(): -1;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: