LeetCode 900
思路还是比较简单的,用两个指针来确定当前的位置,一个用于指向当前在数组中的位置,另外一个看当前位置上的已经用掉了几个,如果用完了,那么我们需要移动第一个指针,有定类似于进位。只是里面的一些细节需要注意。
class RLEIterator:
def __init__(self, A: List[int]):
self.a = A
self.alen = len(self.a)
self.index1 = 0
self.index2 = 0
def next(self, n: int) -> int:
n += self.index2
for i in range(self.index1, self.alen + 2, 2):
if i >= self.alen:
#注意这里要设置一下到尾端了
self.index1 = i
return -1
if n <= self.a[i]:
self.index1 = i
self.index2 = n
break
else:
#超过当前位置的值,进位,移动到下一个
n -= self.a[i]
return self.a[self.index1+1]