We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
- Prepare
- Data Structures
- Queues
- Truck Tour
- Discussions
Truck Tour
Truck Tour
+ 0 comments c#
private static int traverse(List<List<int>> petrolpumps, int start) { int curr_pet = petrolpumps[start][0] - petrolpumps[start][1]; if (curr_pet <= 0) { return traverse(petrolpumps, start + 1); } int i = start + 1 > petrolpumps.Count - 1 ? 0 : start + 1; while (i != start) { curr_pet += (petrolpumps[i][0] - petrolpumps[i][1]); if (curr_pet <= 0) { break; } i++; if (i == petrolpumps.Count) { i = 0; } } if (i != start) { return traverse(petrolpumps, start + 1); } else { return start; } } public static int truckTour(List<List<int>> petrolpumps) { return traverse(petrolpumps, 0); }
passed all test cases
+ 0 comments Python 3
N = len(petrolpumps) pos = fuel = 0 for i in range(N): fuel += petrolpumps[i][0]- petrolpumps[i][1] if fuel < 0: pos = i + 1 fuel = 0 return pos
+ 0 comments Python 3
def truckTour(petrolpumps): N = len(petrolpumps) for i in range(N): j = 0 tank_cap = 0 valid_tour = True while j < N: liters, dist = petrolpumps[(j + i) % N] tank_cap += liters - dist j += 1 if tank_cap < 0: valid_tour = False break if valid_tour: return i
+ 0 comments Python3 with nested loops. Passes all test cases.
def truckTour(petrolpumps): if len(petrolpumps) == 1: return 0 for start in range(len(petrolpumps)): tank, dist = petrolpumps[start] complete = True if tank < dist: continue else: tank -= dist if start == len(petrolpumps) - 1: i = 0 else: i = start + 1 while i != start: tank += petrolpumps[i][0] dist = petrolpumps[i][1] if tank < dist: complete = False break else: tank -= dist if i == len(petrolpumps) - 1: i = 0 else: i += 1 if complete: return start
+ 0 comments The below code
if(sum>0)
pass all tests. Butif(sum>=0)
fails, why? I think the truck should consider to reach the station when the gas down to 0int truckTour(vector<vector<int>> petrolpumps) { int sum; int startPoint = 0; int len = (int)petrolpumps.size(); while(startPoint < len) { sum = 0; for(int i=0; i<len; ++i) { int ii = (startPoint+i) % len; //circle sum += petrolpumps[ii][0] - petrolpumps[ii][1]; if(sum<0) { ++startPoint; break; } } if(sum>0) // I think `if(sum>=0)` is ok, but test cases fail { return startPoint; } } return -1; }
Load more conversations
Sort 311 Discussions, By:
Please Login in order to post a comment