ランレングス符号化列を反復処理するイテレータを書きます。
反復子は、により初期化される RLEIterator(int[] A)
場合、 A
いくつかの配列のランレングス符号化です。具体的には、すべてのためにも i
、 A[i]
非負の整数値があること私たちの回数を伝える A[i+1]
順番に繰り返されます。
反復子はつの機能をサポートしています next(int n)
、次排気れる n
(要素n >= 1
)を、このように排出される最後の要素を返します。排出するために、左要素がない場合は、 next
返す -1
代わりに。
例えば、我々はで始まる A = [3,8,0,9,2,5]
シーケンスのランレングス符号化されています、 [8,8,8,5,5]
。配列「は3つのエイト、ゼロナイン、2ファイブ」として読むことができるからです。
例1:
入力:[ "RLEIterator"、 "次へ"、 "次へ"、 "次へ"、 "次"]、[[[3,8,0,9,2,5]、[2]、[1]、[ 1]、[2]
出力:[NULL、8,8,5、-1]
説明:
RLEIteratorはRLEIterator([3,8,0,9,2,5])で初期化されます。
これは、シーケンス[8,8,8,5,5]にマップされます。
RLEIterator.nextはその後4回呼び出されます。
.next(2)、8 5、残りの配列は今8を返し、配列の2つの条件を排出します。
.next(1)残りの配列は今8を返し、配列の1つのタームを排気する[5,5]。
.next(1)残りの配列は今である[5] 5に戻り、シーケンスの1つのタームを排気します。
.next(2)-1を返し、2項を排出します。尽くさ第1項は5だったためである
が、第2項は存在しませんでした。排出最後の項が存在しないため、我々は-1を返します。
注意:
0 <= A.length <= 1000
A.length
偶数の整数です。0 <= A[i] <= 10^9
- せいぜいがあります
1000
への呼び出しRLEIterator.next(int n)
テストケースごと。 - それぞれのために呼び出す
RLEIterator.next(int n)
必要があります1 <= n <= 10^9
。
Githubの同期住所:
https://github.com/grandyang/leetcode/issues/900
参考文献: