Leetcode 134. 加油站(中等) 贪心算法
题目:
思路:
就是每到达一个站点i
,可以加gas[i]
升油,但离开站点i
需要消耗cost[i]
升油,问你从哪个站点出发,可以兜一圈回来
汽车进入站点i
可以加gas[i]
的油,离开站点会损耗cost[i]
的油,那么可以把站点和与其相连的路看做一个整体,将gas[i] - cost[i]
作为经过站点i
的油量变化值:
有了这个环形数组,我们需要判断这个环形数组中是否能够找到一个起点start
,使得从这个起点开始的累加和一直大于等于 0。
如果把这个「最低点」作为起点,就是说将这个点作为坐标轴原点,就相当于把图像「最大限度」向上平移了。
class Solution { public: int canCompleteCircuit(vector<int>& gas, vector<int>& cost) { int n=gas.size(); //记录累计的剩余油量 int sum=0; //记录起点 int start=0; //记录剩余油量的最小值 int minSum=0; for(int i=0;i<n;++i){ sum+=gas[i]-cost[i]; //如果剩余油量小于最小值,更新起点跟最小值 //目的是找出累计油量最小的位置,并将起点更新至i+1 //这样保证可以到达最低点 // 经过第 i 个站点后,使 sum 到达新低 // 所以站点 i + 1 就是最低点(起点) if(sum<minSum){ start=i+1; minSum=sum; } } //如果总剩余小于0,意味着不能走完 if(sum<0) return -1; //由于有环,start==n也就是0 return start==n?0:start; } };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
分类:
leetcode
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2021-03-04 Leetcode 41.第一个缺失的正数 tag 数组 hard
2021-03-04 [实践OK]CentOS下vim编辑器在可视模式下在secureCRT无法复制的办法。(转)
2016-03-04 android 打Patch的方法 .
2016-03-04 将packages/apps/下的app导入eclipse
2016-03-04 android源码framework下添加新资源的方法
2016-03-04 Framework/base 下添加自定义模块的步骤