Package g0801_0900.s0900_rle_iterator
Class RLEIterator
- java.lang.Object
-
- g0801_0900.s0900_rle_iterator.RLEIterator
-
public class RLEIterator extends Object
900 - RLE Iterator.Medium
We can use run-length encoding (i.e., RLE ) to encode a sequence of integers. In a run-length encoded array of even length
encoding( 0-indexed ), for all eveni,encoding[i]tells us the number of times that the non-negative integer valueencoding[i + 1]is repeated in the sequence.- For example, the sequence
arr = [8,8,8,5,5]can be encoded to beencoding = [3,8,2,5].encoding = [3,8,0,9,2,5]andencoding = [2,8,1,8,2,5]are also valid RLE ofarr.
Given a run-length encoded array, design an iterator that iterates through it.
Implement the
RLEIteratorclass:RLEIterator(int[] encoded)Initializes the object with the encoded arrayencoded.int next(int n)Exhausts the nextnelements and returns the last element exhausted in this way. If there is no element left to exhaust, return-1instead.
Example 1:
Input
[“RLEIterator”, “next”, “next”, “next”, “next”]
[3, 8, 0, 9, 2, 5, [2], [1], [1], [2]]
Output: [null, 8, 8, 5, -1]
Explanation:
RLEIterator rLEIterator = new RLEIterator([3, 8, 0, 9, 2, 5]); // This maps to the sequence [8,8,8,5,5]. rLEIterator.next(2); // exhausts 2 terms of the sequence, returning 8. The remaining sequence is now [8, 5, 5]. rLEIterator.next(1); // exhausts 1 term of the sequence, returning 8. The remaining sequence is now [5, 5]. rLEIterator.next(1); // exhausts 1 term of the sequence, returning 5. The remaining sequence is now [5]. rLEIterator.next(2); // exhausts 2 terms, returning -1. This is because the first term exhausted was 5, // but the second term did not exist. Since the last term exhausted does not exist, we return -1.Constraints:
2 <= encoding.length <= 1000encoding.lengthis even.0 <= encoding[i] <= 1091 <= n <= 109- At most
1000calls will be made tonext.
- For example, the sequence
-
-
Constructor Summary
Constructors Constructor Description RLEIterator(int[] encoding)
-