码迷,mamicode.com
首页 > 其他好文 > 详细

134. Gas Station

时间:2016-07-25 06:59:44      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

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, otherwise return -1.

Note:
The solution is guaranteed to be unique.

Hide Tags

 
public class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int start = 0; //start from start
        while(start<gas.length) {
            int net = gas[start] - cost[start];
            if(net < 0) {
                ++start;
                continue;
            }
            
            int current = start;
            int sum = net;
            int count = 1; //already visit current, can start the journey with sum
            while(count < gas.length) {
                ++current; //go to the next stop
                if(current == gas.length)
                    current = 0;
                
                sum += gas[current] - cost[current];
                if(sum<0) {
                    if(current + 1 <= start) //fix the case gas[2,4] with cost[3,4]
                        return -1;
                    start = current + 1; //start from next one.
                    break;
                }
                ++count;
            }
            
            if(count == gas.length)
                return start;
        }
        return -1;
    }
}

 

Simpler solution:

public class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
    int start = 0, total = 0, tank = 0;
    //if car fails at ‘start‘, record the next station
    for (int visited = 0; visited < gas.length; ++visited) {
      tank += gas[visited] - cost[visited];

      if (tank < 0) {
        start = visited + 1;
        total += tank;
        tank = 0;
      }
    }

    return (total + tank < 0) ? -1 : start;
  }
}

 

 
 

134. Gas Station

标签:

原文地址:http://www.cnblogs.com/neweracoding/p/5702163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!