博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode----134. Gas Station
阅读量:4112 次
发布时间:2019-05-25

本文共 1040 字,大约阅读时间需要 3 分钟。

链接:

大意:

给定一个整型数组gas和一个整型数组cost。

gas[i]意为:汽车到第i个位置时,可以加油gas[i] 

cost[i]意为:汽车从i地行驶至(i + 1) % cost.length 地时需要消耗汽油  。

求从某一地起,满足可以顺时针行驶一周。

规定:当找不到此地时,返回-1。如果可以找到此地,则此地唯一。

思路:

从数组其实位置0开始,顺时针走到数组末尾。在每走到一个地点时:

  1. 记录当前的位置i
  2. 记录当前所剩的油all
  3. 记录从某一地index走,走到i时汽油的数量(同时记录index)

最后首先判断all是否大于等于0:如果小于0,表明不存在满足题意的位置可以使得汽车行驶一圈;如果大于等于0,表明存在这样的位置,此时再根据题意知该位置唯一,则可知该位置肯定就是index(因为index之前的一个index肯定有一段是总耗油小于0,不然不会更新index)

代码:

class Solution {    public int canCompleteCircuit(int[] gas, int[] cost) {        int index = 0, i = 0; // index意为从该位置起,可以顺时针至数组末尾 i为数组当前位置        int rem = 0, all = 0; // rem为从index起,到i位置还剩多少油 若小于0 则重置index和rem  all表示走完一圈后所剩的油        while (i < gas.length) {            rem += gas[i] - cost[i];            all += gas[i] - cost[i];            if (rem < 0) {                rem = 0;                index = i + 1; // 表明从之前的index到i是无法达到的(油不够)            }            i++;        }        // all小于0 表示对循环一周后的油为负数  即无法循环一周        if (all < 0)            return -1;        // 可以循环一周 再结合条件index唯一,可以直接返回index        return index;    }}

结果:

结论:

思考思考思考 

 

 

转载地址:http://nxesi.baihongyu.com/

你可能感兴趣的文章
web.py 0.3 新手指南 - 如何用Gmail发送邮件
查看>>
web.py 0.3 新手指南 - RESTful doctesting using app.request
查看>>
web.py 0.3 新手指南 - 使用db.query进行高级数据库查询
查看>>
web.py 0.3 新手指南 - 多数据库使用
查看>>
一步步开发 Spring MVC 应用
查看>>
python: extend (扩展) 与 append (追加) 的差别
查看>>
「译」在 python 中,如果 x 是 list,为什么 x += "ha" 可以运行,而 x = x + "ha" 却抛出异常呢?...
查看>>
谷歌阅读器将于2013年7月1日停止服务,博客订阅转移到邮箱
查看>>
浅谈JavaScript的语言特性
查看>>
LeetCode第39题思悟——组合总和(combination-sum)
查看>>
LeetCode第43题思悟——字符串相乘(multiply-strings)
查看>>
LeetCode第44题思悟——通配符匹配(wildcard-matching)
查看>>
LeetCode第45题思悟——跳跃游戏(jump-game-ii)
查看>>
LeetCode第46题思悟——全排列(permutations)
查看>>
LeetCode第47题思悟—— 全排列 II(permutations-ii)
查看>>
LeetCode第48题思悟——旋转图像(rotate-image)
查看>>
驱动力3.0,动力全开~
查看>>
记CSDN访问量10万+
查看>>
Linux下Oracle数据库账户被锁:the account is locked问题的解决
查看>>
记CSDN访问20万+
查看>>