// 定义一个名为Solution的类
class Solution {// 定义一个公开方法canCompleteCircuit,输入参数为两个整数数组gas和cost,分别代表加油站的汽油量和消耗油量public int canCompleteCircuit(int[] gas, int[] cost) {// 初始化当前剩余油量sum为0,总剩余油量totalSum为0,以及起始加油站索引index为0int curSum = 0;int totalSum = 0;int index = 0;// 遍历整个数组,模拟遍历一圈加油站for (int i = 0; i < gas.length; i++) {// 更新当前剩余油量:将当前位置加油站的汽油量减去消耗油量curSum += gas[i] - cost[i];// 同时累计总剩余油量totalSum += gas[i] - cost[i];// 当前剩余油量小于0时,说明从起点到当前位置无法完成循环,需要重新选择起点(即下一个加油站)if (curSum < 0) {index = (i + 1) % gas.length; // 确保新的起点仍然在数组范围内curSum = 0; // 重置当前剩余油量为0}}// 若总的剩余油量小于0,则无法找到满足条件的起点,返回-1表示无法完成环形路线if (totalSum < 0) return -1;// 否则,返回可以完成环形路线的起始加油站索引return index;}
}
这段Java代码是解决“加油站”问题的一个解决方案。给定一系列加油站及其对应的加油量和消耗油量,此方法寻找是否存在一个起始加油站,使得汽车能按照顺序经过所有加油站后回到起始站,且油量恰好用完。如果存在这样的环形行驶路线,则返回起始加油站的索引;若不存在,则返回-1。