自己制作的网站模板以后可以修改吗,北京十大展览展示公司,德阳市做网站,八步网站建设hello 大家好#xff01;今天开写一个新章节#xff0c;每一天一道算法题。让我们一起来学习算法思维吧#xff01; function canCompleteCircuit(gas, cost) {// 加油站的总数const n gas.length;// 记录总剩余油量#xff0c;若总剩余油量小于 0#xff0c;说明无法绕环…hello 大家好今天开写一个新章节每一天一道算法题。让我们一起来学习算法思维吧 function canCompleteCircuit(gas, cost) {// 加油站的总数const n gas.length;// 记录总剩余油量若总剩余油量小于 0说明无法绕环路行驶一周let totalSurplus 0;// 记录当前从起始点出发累计的剩余油量let currentSurplus 0;// 记录可能的起始加油站编号初始设为 0let start 0;// 遍历每一个加油站for (let i 0; i n; i) {// 计算从当前加油站出发到下一个加油站的剩余油量const surplus gas[i] - cost[i];// 累加每一个加油站的剩余油量到总剩余油量中totalSurplus surplus;// 累加从当前起始点出发到当前加油站的剩余油量currentSurplus surplus;// 如果当前从起始点出发累计的剩余油量小于 0说明从当前 start 出发无法继续行驶if (currentSurplus 0) {// 则更新起始点为下一个加油站start i 1;// 并将当前累计的剩余油量重置为 0准备从新的起始点开始计算currentSurplus 0;}}// 如果总剩余油量小于 0说明整体的汽油量不足以支持绕环路行驶一周if (totalSurplus 0) {return -1;}// 否则返回记录的起始加油站编号return start;
}// 示例测试
const gas [1, 2, 3, 4, 5];
const cost [3, 4, 5, 1, 2];
console.log(canCompleteCircuit(gas, cost));代码思路解释
初始化部分 n获取加油站的总数用于后续的循环遍历。 totalSurplus用来统计所有加油站的汽油量减去行驶消耗后的总剩余油量。如果这个值小于 0说明无论从哪个加油站出发都无法绕环路行驶一周。 currentSurplus记录从当前假设的起始加油站出发到当前遍历到的加油站时累计的剩余油量。 start表示可能的起始加油站编号初始从 0 号加油站开始尝试。
遍历加油站 在循环中对于每一个加油站计算从该加油站出发到下一个加油站的剩余油量 surplus即 gas[i] - cost[i]。 将这个剩余油量累加到 totalSurplus 中以统计总的剩余油量情况。 同时也将其累加到 currentSurplus 中以跟踪从当前假设的起始点出发的剩余油量变化。 若 currentSurplus 小于 0意味着从当前假设的 start 出发无法到达下一个加油站所以更新 start 为下一个加油站的编号 i 1并将 currentSurplus 重置为 0重新开始从新的起始点计算剩余油量。
结果判断 循环结束后检查 totalSurplus 的值。如果它小于 0说明整体汽油量不够绕环路行驶返回 -1。 若 totalSurplus 大于等于 0说明存在一个起始点可以绕环路行驶一周返回记录的 start 编号。