class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param gas int整型vector * @param cost int整型vector * @return int整型 */ int gasStation(vector<int>& gas, vector<int>& cost) { // write code here int n = gas.size(); int total_tank = 0, curr_tank = 0; int starting_station = 0; for (int i = 0; i < n; ++i) { total_tank += gas[i] - cost[i]; curr_tank += gas[i] - cost[i]; // 如果当前累积油量小于 0,说明从 starting_station 到 i 无法完成,需要重新设定起点 if (curr_tank < 0) { starting_station = i + 1; // 新的起点放在 i 后面 curr_tank = 0; // 油箱油量重置 } } // 如果总油量大于等于总耗油量,说明可以完成一圈 return total_tank >= 0 ? starting_station : -1; } };