leetcode 134. Gas Station ╰半夏微凉° 2022-07-30 13:57 93阅读 0赞 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. 很明显,起点要从gas-cost大于零的地方开始,如果有连续的这样的点,只选取第一个这样的点。 class Solution { public: int canCompleteCircuit(vector<int>& gas, vector<int>& cost) { if (gas.size() == 1) { if (gas[0] >= cost[0]) return 0; else return -1; } vector<int>starter; int k = 0; while (k < gas.size()) { if (gas[k] - cost[k] > 0) { int kk = k; starter.push_back(k); while (kk < gas.size() && gas[kk] - cost[kk] >= 0) kk++; k = kk; } k++; } for (int i = 0; i < starter.size(); i++) { int rem = 0; while (rem >= 0) { rem = gas[starter[i]] - cost[starter[i]]; int kk = starter[i]; int cnt = 1; while (rem >= 0) { kk++; if (kk == gas.size()) kk = 0; rem += gas[kk] - cost[kk]; cnt++; if (cnt == gas.size() && rem >= 0) return starter[i]; } } } return -1; } }; accept
还没有评论,来说两句吧...