[InterviewBit] Gas Station

Gas Station

  • Time :
  • Space :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>

int Solution::canCompleteCircuit(const vector<int> &A, const vector<int> &B) {
int n = A.size();
if(n == 1) return A[0] >= B[0] ? 0 : -1;
vector<int> psum {0};
for(int i = 0; i < A.size() * 2 - 1; i++) psum.push_back(psum[i] + A[i%n] - B[i%n]);
priority_queue<int, vector<int>, greater<int>> q, exc;
for(int i = 0; i < A.size() * 2 - 1; i++) {
if(i >= n + 1) exc.push(psum[i-n-1]);
while(!exc.empty() and exc.top() == q.top()) {
exc.pop();
q.pop();
}
q.push(psum[i]);
if(i >= n and q.top() >= psum[i-n]) return i - n;
}

return -1;
}
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/09/09/PS/interviewbit/gas-station/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.