134. Gas Station加油站
[抄题]:
There are N gas stations along a circular route, where the amount of gas at station i is gas[i].
You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You begin the journey with an empty tank at one of the gas stations.
Return the starting gas station's index if you can travel around the circuit once in the clockwise direction, otherwise return -1.
Note:
- If there exists a solution, it is guaranteed to be unique.
 - Both input arrays are non-empty and have the same length.
 - Each element in the input arrays is a non-negative integer.
 
Example 1:
Input:
gas = [1,2,3,4,5]
cost = [3,4,5,1,2] Output: 3 Explanation:
Start at station 3 (index 3) and fill up with 4 unit of gas. Your tank = 0 + 4 = 4
Travel to station 4. Your tank = 4 - 1 + 5 = 8
Travel to station 0. Your tank = 8 - 2 + 1 = 7
Travel to station 1. Your tank = 7 - 3 + 2 = 6
Travel to station 2. Your tank = 6 - 4 + 3 = 5
Travel to station 3. The cost is 5. Your gas is just enough to travel back to station 3.
Therefore, return 3 as the starting index.
Example 2:
Input:
gas = [2,3,4]
cost = [3,4,3] Output: -1 Explanation:
You can't start at station 0 or 1, as there is not enough gas to travel to the next station.
Let's start at station 2 and fill up with 4 unit of gas. Your tank = 0 + 4 = 4
Travel to station 0. Your tank = 4 - 3 + 2 = 3
Travel to station 1. Your tank = 3 - 3 + 3 = 3
You cannot travel back to station 2, as it requires 4 unit of gas but you only have 3.
Therefore, you can't travel around the circuit once no matter where you start.
[暴力解法]:
时间分析:
空间分析:
[优化后]:
时间分析:
空间分析:
[奇葩输出条件]:
[奇葩corner case]:
[思维问题]:
不知道怎么表示:天啦噜,多开几个变量还没学会么?
[英文数据结构或算法,为什么不用别的数据结构或算法]:
[一句话思路]:
tank就一直+=就行了,就可以不必清空
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
tank就一直+=就行了,就可以不必清空。不符合条件的时候才清空。
[复杂度]:Time complexity: O(n) Space complexity: O(1)
[算法思想:迭代/递归/分治/贪心]:
[关键模板化代码]:
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
[代码风格] :
[是否头一次写此类driver funcion的代码] :
[潜台词] :
// package whatever; // don't place package name!
class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        //corner case
      if (gas == null || cost == null) return -1; 
      //initialization
      int sumGas = 0;
      int sumCost = 0;
      int tank = 0;
      int start = 0;
      //for loop and renew the start
      for (int i = 0; i < gas.length; i++) {
        sumGas += gas[i];
        sumCost += cost[i];
        tank += gas[i] - cost[i];
        //if tank < 0, renew start
        if (tank < 0) {
          start = i + 1;
          tank = 0;
        }
      }
      //if sumgas > sumcost, return start.
      if (sumGas >= sumCost) return start;
      return -1;
    }
}
/*
gas  = [1, 2, 3, 4, 5]
cost = [3, 4, 5, 1, 2]
i      0   1  2  3  4
sumgas 1   3  6  10 15
sumcost 3  7  12 13 15
tank   -2        3  6
*/
134. Gas Station加油站的更多相关文章
- [leetcode]134. Gas Station加油站
		
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. Y ...
 - 134 Gas Station 加油站
		
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i].你有一辆油箱容量无限的的汽车,从第 i 个加油站前往第 i+1 个加油站需要消耗汽油 cost[i].你从其中一个加油站出发,开始 ...
 - 134. Gas Station leetcode
		
134. Gas Station 不会做. 1. 朴素的想法,就是针对每个位置判断一下,然后返回合法的位置,复杂度O(n^2),显然会超时. 把这道题转化一下吧,求哪些加油站不能走完一圈回到自己,要求 ...
 - 贪心:leetcode 870. Advantage Shuffle、134. Gas Station、452. Minimum Number of Arrows to Burst Balloons、316. Remove Duplicate Letters
		
870. Advantage Shuffle 思路:A数组的最大值大于B的最大值,就拿这个A跟B比较:如果不大于,就拿最小值跟B比较 A可以改变顺序,但B的顺序不能改变,只能通过容器来获得由大到小的顺 ...
 - Leetcode 134 Gas Station
		
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...
 - [LeetCode] 134. Gas Station 解题思路
		
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...
 - [leetcode greedy]134. Gas Station
		
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...
 - [LeetCode] Gas Station 加油站问题
		
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...
 - leetcode 134. Gas Station ----- java
		
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...
 
随机推荐
- 浅谈JS的数组遍历方法
			
用过Underscore的朋友都知道,它对数组(集合)的遍历有着非常完善的API可以调用的,_.each()就是其中一个.下面就是一个简单的例子: var arr = [1, 2, 3, 4, 5]; ...
 - laravel whereNotIn where子查詢
			
子查詢寫法 $stores = Stores::select('id','name')->whereNotIn('id', function ($query) use($id){ $query- ...
 - php调用API支付接口 可个人使用,无需营业执照(使用第三方接口,调用的天工接口。)
			
首先访问 https://charging.teegon.com/ 注册账号, 找到开发配置 记下client_id和client_secret. 点击 天工开放平台 点击天工收银 点击 S ...
 - shell脚本大小写转换
			
几个方法 1.tr命令 2.sed替换 3.awk的tolower() toupper() 4.perl语言 详见 http://blog.51cto.com/wangxiaoyu/197623 L ...
 - Ajax传递json数据简介和一个需要注意的小问题
			
Ajax传递json数据 Ajax操作与json数据格式在实际中的运用十分广泛,本文为大家介绍一个两者相结合的小案例: 项目结构 我们新建一个Django项目,在里面创建一个名为app01的应用: p ...
 - 如何判断win10 和office的版本
			
1:区分win10的版本 2:查询office 的版本
 - 知识点:spring 完全手册
			
什么是spring spring是一个开源框架,为简化企业级开发而生,使用spring可以使简单的java bean 实现以前只有EJG才能实现的功能. Spring是一个轻量级的控制反转(IoC)和 ...
 - Alsa aplay   S8 U8 S16_LE S16_BE U16_LE U16_BE格式
			
举个例子 aplay -r 16000 -f S16_LE -D hw:0,0 -c 2 -d 3 ~/Private/Private_Tools/02_ALSA_Learning/left_1k_r ...
 - html/css/js-如何利用jq来更改属性的值和获取属性的值
			
jquery的使用在web开发中是非常广泛的,虽然说比较容易,易学,但在开发过程中,也总是会碰到各种各样的小问题. 我曾经就遇到这种问题,jq如何获取属性值和更改属性值的. 众所周知,attr()可以 ...
 - C语言数据结构基础学习笔记——栈和队列
			
之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1: ...