leedcode做题总结,题目Gas Station-------- 2013/09/28
2014-07-21 18:08
896 查看
一段循环的路上有N个加油站,2个数组分别是每个加油站加油量和去下一个加油站的花费量。
一开始从每个节点开始历遍一圈,果断超时。
后来想了另一种方法,假设从点A开始,如果到点M油的积累量小于0了,则必然不会从0~M区间中开始,一位车到达区间中任何一点是油箱里都有剩油,在有剩油的情况下出发到M点都没油了更何况邮箱为空的情况下出发。
所以起点暂定为(M+1)%N,如果后面又出现积累量小于0的情况需要更新M。
全部历遍完了判断总的积累量是否大于等于0,是的话就说明可以跑完一圈。
一开始从每个节点开始历遍一圈,果断超时。
后来想了另一种方法,假设从点A开始,如果到点M油的积累量小于0了,则必然不会从0~M区间中开始,一位车到达区间中任何一点是油箱里都有剩油,在有剩油的情况下出发到M点都没油了更何况邮箱为空的情况下出发。
所以起点暂定为(M+1)%N,如果后面又出现积累量小于0的情况需要更新M。
全部历遍完了判断总的积累量是否大于等于0,是的话就说明可以跑完一圈。
public int canCompleteCircuit(int[] gas, int[] cost) { int gas1=0; int gas2=0; int tmp=0; for(int i=0;i<gas.length;i++){ gas1=gas1+gas[i]-cost[i]; gas2=gas2+gas[i]-cost[i]; if(gas1<0){ tmp=(i+1)%gas.length; gas1=0; } } if(gas2<0)return -1; return tmp; }
相关文章推荐
- leedcode做题总结,题目Two Sum2011-03-13
- leedcode做题总结,题目Linked List Cycle I/II 13/10/28-30
- leedcode做题总结,题目Path SumI/II-------- 2012/10/13-14
- leedcode做题总结,题目Median of Two Sorted Arrays----- 2011/03/27
- leedcode做题总结,题目Evaluate Reverse Polish Notation 2013/11/27
- leedcode做题总结, 题目Permutations I/II46/47
- leedcode做题总结,题目Binary Tree Zigzag Level Order Traversal 2012/09/28
- leedcode做题总结, 题目Longest Palindromic Substring 5
- leedcode做题总结,题目Remove Element 2012/02/16
- leedcode做题总结,题目Reorder List 13/11/12
- leedcode做题总结, 题目Unique Binary Search TreesI/II95/96
- leedcode做题总结, 题目Construct Binary Tree from Preorder。。。105/106
- leedcode做题总结,题目Rotate Image 2012/03/17
- leedcode做题总结,题目ZigZag Conversion2011-12-05(wrong answer)
- leedcode做题总结,题目Binary Tree Preorder Traversal 2013/11/05
- leedcode做题总结,题目Maximum Depth of Binary Tree-------2012/09/29
- leedcode做题总结,题目Convert Sorted Array to Binary Search Tree 2013/02/18
- leedcode做题总结,题目Sum Root to Leaf Numbers 2013/02/18
- leedcode做题总结,题目Same Tree 2012/09/03
- leedcode做题总结, 题目Find Minimum in Rotated Sorted Array I/II