134. 加油站(leetcode)
https://leetcode.cn/problems/gas-station/
贪心,原理是: 如果x能到达y,不能到达y+1,那么x-y之间的点也不可能到达y+1:z为xy之间一点,从x开始到z(在z加油前),剩余油量一定大等于0,但是从z开始的话,起始油量一定等于0 >> 起始油量大等于0都到达不了y+1,那起始油量为0就更不能到达y+1了
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int n=gas.length;
int sumGas=0;
int totalGas=0;
int start=0;
for(int i=0;i<n;i++)
{
// 计算总gas
totalGas+=gas[i]-cost[i];
// 计算当前净收入
sumGas+=gas[i]-cost[i];
if(sumGas<0)
{
// 从上次起点到现在此点的区间都不可以走完环,直接使用下一个点作为新起点继续检查
sumGas=0;
start=i+1;
}
}
// 总开支大于收入,无解
if(totalGas<0)return -1;
return start;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了