传送门:https://leetcode-cn.com/contest/weekly-contest-101/problems/rle-iterator/
class RLEIterator {
int cnt[1004], h[1004];
int front, rear;
public:
RLEIterator(vector<int> A) {
front = rear = 0;
for(int i = 0; i < A.size(); i += 2) {
if(A[i]) {
cnt[rear] = A[i];
h[rear++] = A[i+1];
}
}
}
int next(int n) {
int last = -1;
while(front < rear) {
if(n > cnt[front]) n -= cnt[front], front++;
else {
last = h[front];
cnt[front] -= n; //记录变化
break;
}
}
return last;
}
};
/**
* Your RLEIterator object will be instantiated and called as such:
* RLEIterator obj = new RLEIterator(A);
* int param_1 = obj.next(n);
*/